众所周知 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];
}
网友评论