NSKeyedArchiver和NSValue - 如何存档?

时间:2010-04-24 20:09:26

标签: iphone archive nskeyedarchiver cgpoint

如何归档NSValues数组?我应该做什么转换才能做到这一点?它不会按原样存档。

代码:

[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver 
archivedDataWithRootObject:[[NSArray alloc] initWithArray:drawingsArray]] 
forKey:@"NSValuesArray"];

错误:

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSKeyedArchiver encodeValueOfObjCType:at:]: this archiver cannot encode structs'

阵列数据:

drawingsArray (
    (
    NSPoint: {439, 280},
    NSPoint: {439, 280},
    NSPoint: {439, 287},
    NSPoint: {438.62, 290.104},
    NSPoint: {439, 293}
)

1 个答案:

答案 0 :(得分:1)

您无需使用NSKeyedArchiver。相反,只需说出[[NSUserDefaults standardUserDefaults] setObject:valueArray forKey:@"valueArray"]。归档将自动完成。看看是否有效。

编辑:我认为您的具体问题是使用archivedDataWithRootObject:。您不需要使用它,因为NSArray符合NSCoder - 子对象也将自动存档。