美文网首页
使用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 对象数据

    众所周知 NSRange 是 Objective-C 的一个结构体,如果想把它直接加入到一个数组中是行不通,因此...

  • 【OC梳理】NSValue 、NSNumber、NSDate、N

    NSValue NSValue对象是用来存储一个C或者Objective-C数据的简单容器。目的是为了允任意类型的...

  • redis对象

    对象的类型与编码 redis使用对象来表示数据库中的键和值,每次当我们在redis的数据库中新创建一个键值对时,我...

  • iOS入门小知识-NSValue

    NSValue NSValue是NSNumber的超父类,可以存储任何类型的数据,包括复合数据类型(数组,指针,结...

  • NSNumber和NSValue

    NSNumber 初始化 NSNumber是NSValue的一个子类,可以将数据类型转换为对象类型方便操作 相应的...

  • [python]-day2

    数据类型 数据类型由三部分组成身份(id)、类型(type)、值。看对象有没有改变使用id(object)查看对象...

  • iOS入门小知识-NSNumber

    NSNumber NSNumber继承自NSValue,是一个用来包装的类,可以将基础数据类型包装成一个对象

  • runtime---数据结构

    数据结构 objc_object objc_class -所有的对象都是id类型的,id类型在runtime中...

  • 栈与堆

    堆:数据结构类型自下而上。栈:数据结构类型自上而下。 我们常看到的Objc变量本质上是一个指针,指向一个对象,对象...

  • KVC详解

    NSNumber和NSValue对基础C数据类型的对象化封装 - 王中周的个人博客 - 博客频道 -...

网友评论

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

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