iOS - Enum

枚举在项目中使用的比较多,目的是规范业务。作用主要分states和options。

1. states和options的区别###

states是单选,表示当前处于某钟状态。例如:应用当前网络是4G。
options可以使多选,表示处于多种情况下,例如:应用支持支付宝和微信支付。

1.1 states 实例###

typedef NS_ENUM(NSUInteger, XX_NetworkTrafficType)
{
    XX_NetworkTrafficTypeWWAN_3G = 0,
    XX_NetworkTrafficTypeWWAN_4G,
    XX_NetworkTrafficTypeWIFI,
    //...
};

1.2 options 实例###

如果位运算需要学习的话,可以看这里 - matrix67.位运算

typedef NS_OPTIONS(NSUInteger, XX_ThirdPayType)
{
    XX_ThirdPayTypeWechat     = 1 << 0,  //*> 微信支付
    XX_ThirdPayTypeAliPay     = 1 << 1,  //*> 支付宝支付
    XX_ThirdPayTypeC_UnionPay = 1 << 2,  //*> 银联支付
    XX_ThirdPayTypeApplePay   = 1 << 3   //*> 苹果支付
    XX_ThirdPayTypePayPal     = 1 << 4,  //*> Paypal支付
};

XX_ThirdPayType myPayType = XX_ThirdPayTypeAliPay | XX_ThirdPayTypeWechat | XX_ThirdPayTypeApplePay;
NSLog(@"%lu",(unsigned long)myPayType);
// 打印:11 

为什么option使用位运算呢?举例:myPayType = 11; 正是利用"|"或运算的组合拳。
所以我们还可以这么声明Options

typedef NS_OPTIONS(NSUInteger, XX_ThirdPayType)
{
    XX_ThirdPayTypeWechat     = 1 << 0,  //*> 微信支付
    XX_ThirdPayTypeAliPay     = 1 << 1,  //*> 支付宝支付
    XX_ThirdPayTypeC_UnionPay = 1 << 2,  //*> 银联支付
    XX_ThirdPayTypeApplePay   = 1 << 3,  //*> 苹果支付
    XX_ThirdPayTypePayPal     = 1 << 4,  //*> Paypal支付
    
    XX_ThirdPayTypeChinaPay   = XX_ThirdPayTypeWechat |
                                XX_ThirdPayTypeAliPay |
                                XX_ThirdPayTypeC_UnionPay, //*> 中国国内支付平台
    
    XX_ThirdPayTypeForeignPay = XX_ThirdPayTypeApplePay |
                                XX_ThirdPayTypePayPal,     //*> 中国国外支付平台
    
    XX_ThirdPayTypeAllPay     = XX_ThirdPayTypeChinaPay |
                                XX_ThirdPayTypeForeignPay  //*> 所有支付平台
};

ok,let's go a right way 😄

说明:
NS_ENUM 和 NS_OPTIONS 分别是 Foundation 提供给Objective-C 定义状态和选择的枚举定义方法。

posted @ 2016-05-17 15:18  lvable  阅读(248)  评论(0)    收藏  举报