[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];
如果我使一组自定义对象符合 NSCoding 协议,那么上述方法是否有效?我是否必须使自定义类和包含自定义对象数组的视图控制器都符合 NSCoding 协议或只是自定义类?我必须在某处使用 NSKeyedArchiver 吗?
[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:@"myArray"];
如果我使一组自定义对象符合 NSCoding 协议,那么上述方法是否有效?我是否必须使自定义类和包含自定义对象数组的视图控制器都符合 NSCoding 协议或只是自定义类?我必须在某处使用 NSKeyedArchiver 吗?
看起来您需要使用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 的麻烦,为什么不把它归档到一个文件中呢?
让我认为您需要使用存档器的文档在这里,您可以自己检查。