美文网首页
使用NSValue 编码一个值类型数据到 ObjC 对象数据

使用NSValue 编码一个值类型数据到 ObjC 对象数据

作者: 张科_Zack | 来源:发表于2021-09-06 11:50 被阅读0次

    众所周知 NSRange 是 Objective-C 的一个结构体,如果想把它直接加入到一个数组中是行不通,因此需要一种方法把 NSRange 转换为对象类型从而加到数组中。我们可以使用 NSValue 达到这种编码一个结构体类型数据为 Object 数据。看如下代码可以编码一个 NSRange 结构体数据为 Object

        NSRange range =  NSMakeRange(0, 10);
        NSValue *value = [NSValue valueWithRange:range];
    

    当然我们这里定义了另一种结构体并编码如下

    struct MyPoint {
        int i;
        float f;
    } ;
    typedef struct MyPoint MyPoint;
    
    - (void)encodeStruct {
        MyPoint aStruct;
        aStruct.i = 42;
        aStruct.f = 3.14;
     
        NSValue *structValue = [NSValue value:&aStruct
                                 withObjCType:@encode(MyPoint)];
        NSArray *arr = @[@"1", structValue];
    }
    

    相关文章

      网友评论

          本文标题:使用NSValue 编码一个值类型数据到 ObjC 对象数据

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