美文网首页
OC枚举之妙用

OC枚举之妙用

作者: summer201704 | 来源:发表于2018-01-25 01:15 被阅读0次

使用枚举来定义内容和顺序
代码如下:
定义:

//内容
typedef NS_OPTIONS(NSUInteger, ContentType) {
    A1 = 1,
    A2 = 2,
    A3 = 3,
    A4 = 4,
    A5 = 5,
    A6 = 6,
    A7 = 7,
    A8 = 8
};

//顺序
typedef NS_OPTIONS(NSUInteger, PositionType) {
    P1 = 0xF0000000,
    P2 = 0x0F000000,
    P3 = 0x00F00000,
    P4 = 0x000F0000,
    P5 = 0x0000F000,
    P6 = 0x00000F00,
    P7 = 0x000000F0,
    P8 = 0x0000000F
};

使用:
NSUInteger testNumber1 = (A1 << 28) | (A4 << 24) | (A2 << 20) | (A7 << 16) | (A3 << 12) | (A8 << 8) | (A6 << 4) | (A5 << 0);

解析

    NSString *positionNumber1 = [self valueOnPosition:testNumber1 position:P1];
    NSString *positionNumber2 = [self valueOnPosition:testNumber1 position:P2];
    NSString *positionNumber3 = [self valueOnPosition:testNumber1 position:P3];
    NSString *positionNumber4 = [self valueOnPosition:testNumber1 position:P4];
    NSString *positionNumber5 = [self valueOnPosition:testNumber1 position:P5];
    NSString *positionNumber6 = [self valueOnPosition:testNumber1 position:P6];
    NSString *positionNumber7 = [self valueOnPosition:testNumber1 position:P7];
    NSString *positionNumber8 = [self valueOnPosition:testNumber1 position:P8];
    
    NSLog(@"positionNumber1 : %@, \npositionNumber2 : %@, \npositionNumber3 : %@, \npositionNumber4 : %@, \npositionNumber5 : %@, \npositionNumber6 : %@, \npositionNumber7 : %@, \npositionNumber8 : %@", positionNumber1, positionNumber2, positionNumber3, positionNumber4, positionNumber5, positionNumber6, positionNumber7, positionNumber8);

- (NSString *)valueOnPosition:(NSUInteger)number position:(NSUInteger)position{
    
    NSUInteger contentNumber = position & number;
    

    switch (position) {
        case P1:
            contentNumber = contentNumber >> 28;
            break;
        case P2:
            contentNumber = contentNumber >> 24;
            break;
        case P3:
            contentNumber = contentNumber >> 20;
            break;
        case P4:
            contentNumber = contentNumber >> 16;
            break;
        case P5:
            contentNumber = contentNumber >> 12;
            break;
        case P6:
            contentNumber = contentNumber >> 8;
            break;
        case P7:
            contentNumber = contentNumber >> 4;
            break;
        case P8:
            contentNumber = contentNumber >> 0;
            break;
            
        default:
            break;
    }
    
    return [self getValue:contentNumber];
}

- (NSString *)getValue:(NSUInteger)number{
    if (number == A1) {
        return @"A1";
    }else if (number == A2){
        return @"A2";
    }else if (number == A3){
        return @"A3";
    }else if (number == A4){
        return @"A4";
    }else if (number == A5){
        return @"A5";
    }else if (number == A6){
        return @"A6";
    }else if (number == A7){
        return @"A7";
    }else if (number == A8){
        return @"A8";
    }
    return @"unknown";
}

相关文章

  • OC枚举之妙用

    使用枚举来定义内容和顺序代码如下:定义: 解析

  • 在学习swift的一些笔记(七)

    OC与Swift中的枚举 OC的枚举NS_ENUM NS_ENUM : 递增枚举, 每个枚举类型即便不是每个都赋值...

  • Swift 枚举,结构体,类

    枚举(enum) 枚举的成员类型 相对于OC的枚举来说.Swift中的枚举功能要更加强大 OC中枚举值只能是int...

  • Swift-07:枚举enum

    这里先介绍一下swift枚举与oc枚举的区别 OC: 枚举只能为Int类型swift : 可以在枚举中定义方法 可...

  • Swift 基础笔记 - 枚举

    枚举 OC定义和使用枚举 Swift定义枚举类型 Swift判断枚举类型 枚举成员类型

  • OC枚举之简介

    背景 对于开发者来说,枚举是最普通不过的一种开发手段。它通常用来定义一种类型的状态,这个状态可能有2个,也可能有7...

  • swift学习之枚举

    相比OC的枚举类型,swift的枚举类型就方便的多,OC的枚举类型成员属性只能是整数NSInterger(C语言的...

  • iOS 枚举类型的使用

    OC中的枚举类型

  • Swift与OC的语法简单对比(常用语法二)

    20- 枚举,枚举原始值,枚举相关值,switch提取枚举关联值 Swift枚举: Swift中的枚举比OC中的枚...

  • 位移枚举

    位移枚举 一. OC中常见的三种枚举 C语言枚举 // C语言枚举 typedef enum : NSUInteg...

网友评论

      本文标题:OC枚举之妙用

      本文链接:https://www.haomeiwen.com/subject/tsapaxtx.html