1

如何归档 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}
)

)

4

1 回答 1

1

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

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

于 2010-04-24T22:04:39.413 回答