0
[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];

如果我使一组自定义对象符合 NSCoding 协议,那么上述方法是否有效?我是否必须使自定义类和包含自定义对象数组的视图控制器都符合 NSCoding 协议或只是自定义类?我必须在某处使用 NSKeyedArchiver 吗?

4

1 回答 1

2

看起来您需要使用NSKeyedArchiver或归档您的阵列NSArchiver。如果您首先将数组存档到 NSData 对象中:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myArray];

然后,您可以像这样将该数据存储在 NSUserDefaults 中:

[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"myArray"];

要加载数组,请使用:

NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"myArray"];
NSArray *myArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];

如果你想使用 NSMutableArray,那么只需将NSArray上面代码中出现的任何地方替换为NSMutableArray. 或者你可以NSMutableArray *myMutableArray = [myArray mutableCopy]给你一个 NSMutableArray 来使用。

但是,嘿,如果你要让它符合 NSCoding 的麻烦,为什么不把它归档到一个文件中呢?

让我认为您需要使用存档器的文档在这里,您可以自己检查。

于 2010-09-19T06:27:14.953 回答