iOS效率问题:字符串高效转换

2017-09-11  本文已影响39人  十一岁的加重

也许你跟我会有同样一种感觉,有个问题在我们心里一直藏着,在很长一段时间里我们都没法解决,但是突然猛的有一天,你就会解决出来。

回忆一:
之前公司项目从Xcode6.3升级到Xcode7.1直接报错,没法修改,报NSObject错,这个系统级别的错,没法修改,我每天都在想,毕竟这谷歌搜不出来,不知道用什么去描述。我每天都在想,乱想,后面一星期后,我解决了这个问题。

回忆二:
由于操作习惯不想记住密码,所以想快速登录QQ,在谷歌上找到了用AppleScript可以实现,但是只能登录一个,那么问题来了,我想登录两个咋办,谷歌上没有解决方案。也许是那么写代码太兴奋了,我一直坚信自己能写出来,如果写不出来今晚我就别睡了,心中一直有这想法,最后晚上十二点半的时候,我居然写出来了,莫名的兴奋,当然那晚是我第三次使用AppleScript,之前没有用过,也不了解。

场景不用说了,做iOS的都知道,很多时候我们要转换不同类型的东西成字符串,那个方法很长,不知道你有印象没,如何高效率地转换是个头痛的问题,每次用系统那个又臭又长的方法时,心中总是不爽,都会想,有没有更高效的方式来做这件事呢,直到今天,所以有了今天的文章


#ifdef __OBJC__
#import <Foundation/NSString.h>
#endif

#if __has_extension(attribute_overloadable)

static inline __attribute__((overloadable)) NSString * stringFrom(id arg) {
    return [NSString stringWithFormat:@"%@", arg];
}

static inline __attribute__((overloadable)) NSString * stringFrom(char arg) {
    return [NSString stringWithFormat:@"%c", arg];
}

static inline __attribute__((overloadable)) NSString * stringFrom(unsigned char arg) {
    return [NSString stringWithFormat:@"%c", arg];
}

static inline __attribute__((overloadable)) NSString * stringFrom(short arg) {
    return [NSString stringWithFormat:@"%hd", arg];
}

static inline __attribute__((overloadable)) NSString * stringFrom(unsigned short arg) {
    return [NSString stringWithFormat:@"%hu", arg];
}

static inline __attribute__((overloadable)) NSString * stringFrom(int arg) {
    return [NSString stringWithFormat:@"%d", arg];
}

static inline __attribute__((overloadable)) NSString * stringFrom(unsigned int arg) {
    return [NSString stringWithFormat:@"%u", arg];
}

static inline __attribute__((overloadable)) NSString * stringFrom(long arg) {
    return [NSString stringWithFormat:@"%ld", arg];
}

static inline __attribute__((overloadable)) NSString * stringFrom(unsigned long arg) {
    return [NSString stringWithFormat:@"%lu", arg];
}

static inline __attribute__((overloadable)) NSString * stringFrom(long long arg) {
    return [NSString stringWithFormat:@"%lld", arg];
}

static inline __attribute__((overloadable)) NSString * stringFrom(unsigned long long arg) {
    return [NSString stringWithFormat:@"%llu", arg];
}

static inline __attribute__((overloadable)) NSString * stringFrom(float arg) {
    return [NSString stringWithFormat:@"%f", arg];
}

static inline __attribute__((overloadable)) NSString * stringFrom(double arg) {
    return [NSString stringWithFormat:@"%f", arg];
}

#endif

至于NSIntegerNSUIntegerCGFloat直接调用此方法即可,自动转换

上一篇下一篇

猜你喜欢

热点阅读