我正在尝试将对象的 NSArray
保存到 NSUserDefaults
,但是当我使用 getObject 拉回
它不包含任何内容。NSArray
时
我在这里设置了一个断点来计算对象并验证数组中是否有项目
[[NSUserDefaults standardUserDefaults] setObject:mappingResult.array forKey:kArrayOfFoundThings];
[[NSUserDefaults standardUserDefaults] synchronize];
这是我将它们拉出的地方,阵列显示里面什么也没有。
NSArray *allAmbulances = [[NSUserDefaults standardUserDefaults] objectForKey:kArrayOfFoundThings];
最佳答案
假设数组中包含的对象符合 NSCoding
协议(protocol),您可以使用
// let's take the NSString as example
NSArray *array = @[@"foo", @"bar"];
[[NSUserDefaults standardUserDefaults] setObject: [NSKeyedArchiver archivedDataWithRootObject:array] forKey:@"annotationKey"];
NSArray *archivedArray = [NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] objectForKey:@"annotationKey"]] ;
如果它们符合NSCopying
协议(protocol),那么
// let's take the NSString as example
NSArray *array = @[@"foo", @"bar"];
[[NSUserDefaults standardUserDefaults] setObject: array forKey:@"annotationKey"];
NSArray *archivedArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"annotationKey"] ;
编辑
好的,它可能不适用于符合 NSCopying
协议(protocol)的对象的 NSArray
,但可以说它适用于符合 NSCoding
的对象Brad Larson 在以下回答中指出的协议(protocol):
Storing custom objects in an NSMutableArray in NSUserDefaults
关于ios - 将 NSArray 保存到 NSUserDefaults 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17534869/