我希望能够将一个objective-c对象,例如一个NSArray
或UIImage
转换成一个NSData
对象,然后我可以用它来写入磁盘。我首先将它们转换为NSValue
,然后我计划将其转换为NSData
. 这个问题提供了部分答案,但是当他们使用. 时NSNumber
,他们真的不需要将其转换回NSValue
.
我已经看到了其他问题,例如这个依赖于 的问题NSKeyedArchiver
,但由于发生了巨大的规模膨胀,我想避开这个问题。
因此,从第一个问题开始,我目前用于从 中编码NSData
对象的代码NSValue
如下:
+(NSData*) dataWithValue:(NSValue*)value {
NSUInteger size;
const char* encoding = [value objCType];
NSGetSizeAndAlignment(encoding, &size, NULL);
void* ptr = malloc(size);
[value getValue:ptr];
NSData* data = [NSData dataWithBytes:ptr length:size];
free(ptr);
return data;
}
我的问题是我将如何解码NSData
以这种方式编码的对象并objCType
从NSValue
?
我会假设我会使用这些方面的东西
[NSValue valueWithBytes:[data bytes] objCType:typeHere];
我将如何取回类型信息?