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 定义状态和选择的枚举定义方法。

浙公网安备 33010602011771号