[iOS] 实现IIF功能和DECODE函数功能
2016-08-16 10:44
405 查看
iOS开发过程中需要处理大量分支判断代码,需要大量使用if、switch等进行分支处理。代码编写和查看都可能出现潜在问题,使用Objective-c语言的自身特点,可以通过以下转换,优化分支判断处理的代码写法。关键是可以一行代码搞定各种分支判断。实现代码简化。
使用宏定义将三目运算改为IIF函数运算,类似于EXCEL的IF公式
使用Category拓展NSString,支持DECODE计算,类似于ORACLE等数据库系统中SQL的DECODE()函数。这里使用了可变参数列表方式可以实现无限制使用参数。
使用IIF和DECODE的方法如下
--------------------------------------------------------------------------------------
- 版权声明:
- 如在本页面内无特别说明,本文内容均为[李大仁博客]原创,本文版权归[李大仁博客]所有。
- 欢迎转载,转载请务必在文章页面明显位置提供原文链接并注明出处。欢迎您在转载本文时保留本段声明。
- 文章标题: [iOS] 实现IIF功能和DECODE函数功能
- 独立博客:李大仁博客
- 永久链接:http://www.lidaren.com/archives/1628
--------------------------------------------------------------------------------------
以上内容由博客自动发布工具自动发布,最终显示内容和效果会与原文内容有所偏差,敬请谅解。
使用宏定义将三目运算改为IIF函数运算,类似于EXCEL的IF公式
#if !defined(IIF) #define IIF_IMPL(condition,true_,false_) (condition)?true_:false_ #define IIF(condition,true_,false_) IIF_IMPL(condition,true_,false_) #endif
使用Category拓展NSString,支持DECODE计算,类似于ORACLE等数据库系统中SQL的DECODE()函数。这里使用了可变参数列表方式可以实现无限制使用参数。
-(NSString *)decode:(NSString *)firstKey, ... NS_REQUIRES_NIL_TERMINATION { va_list params; //定义一个指向个数可变的参数列表指针; id next; if (firstKey) { va_start(params,firstKey);//va_start 得到第一个可变参数地址, id key = firstKey; //va_arg 指向下一个参数地址 while(key && (next = va_arg(params,id))) { if (next && key){ if ([self isEqualToString:key]) { return next; } } key = va_arg(params,id); } return key; //置空 va_end(params); }else{ return firstKey; } }
使用IIF和DECODE的方法如下
//IIF使用DEMO int a = 1; //单次 NSString *result1 = IIF(a==1, @"a = 1", @"a <> 1"); //级连 NSString *result2 = IIF(a==1, IIF(a==2, @"a = 2", @"a <> 2"), @"a <> 1"); //DECODE使用DEMO NSString *str2Decode = @"abc"; //支持使用Default NSString *decodeResult1 = [str2Decode decode:@"key1",@"1",@"abc",@"2",@"efg",@"3",@"with default",nil]; //不使用Default NSString *decodeResult2 = [str2Decode decode:@"key1",@"1",@"abc",@"2",@"efg",@"3",nil];
--------------------------------------------------------------------------------------
- 版权声明:
- 如在本页面内无特别说明,本文内容均为[李大仁博客]原创,本文版权归[李大仁博客]所有。
- 欢迎转载,转载请务必在文章页面明显位置提供原文链接并注明出处。欢迎您在转载本文时保留本段声明。
- 文章标题: [iOS] 实现IIF功能和DECODE函数功能
- 独立博客:李大仁博客
- 永久链接:http://www.lidaren.com/archives/1628
--------------------------------------------------------------------------------------
以上内容由博客自动发布工具自动发布,最终显示内容和效果会与原文内容有所偏差,敬请谅解。
相关文章推荐
- [iOS]Xcode7.0关闭Bitcode编译
- [iOS]CoreGraph在64位模式下与NSString drawInRect冲突
- [iOS]iPad和iPhone版本xib文件相互转换
- [iOS]Makefile交叉编译静态库TA-lib
- [iOS]Xcode5下使用Makefile编译找不到GCC
- iOS开发之使用Keychain来存取敏感信息
- iOS开发之NSDateFormatter的NSLocale使用en_US_POSIX还是en_US
- iOS开发之Relaese时关闭NSLog使之不在控制台显示
- iOS开发之跑马灯滚动条的两种方法与实现
- iOS开发之类Siri的语言识别程序的开发与实践(Nuance技术)
- IOS打包错误解决
- iOS开发之画面切换的各种动画效果附私有API
- [iOS 转] xib文件加载控制器View的一些原理
- iOS 注释
- 集成支付宝钱包支付iOS SDK的方法与经验
- iOS学习的链接!!
- iOS block中变量使用的问题
- 《Motion Design for iOS》(四十三)
- 李洪强iOS开发本人集成环信的经验总结_08_自动登录补充
- IOS 中的CoreImage框架(framework)