iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 将NSArray保存到NSUserDefaults无效大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将NSArray对象保存到NSUserDefaults,但是当我使用getObject将NSArray拉回来时,它什么都没有.

我在此处设置了一个断点来计算对象并验证数组中是否有项目

[[NSUserDefaults standardUserDefaults] setObject:mappingResult.array forKey:kArrayOfFoundThings];
[[NSUserDefaults standardUserDefaults] synchronize];

这是我把它们拉出来的地方,数组里面没有任何内容.

NSArray *allAmbulances = [[NSUserDefaults standardUserDefaults] objectForKey:kArrayOfFoundThings];

解决方法

假设您的数组中包含的对象符合NSCoding协议,您可以使用

// 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协议,那么

// let's take the NSString as example
NSArray *array = @[@"foo",@"bar"];

[[NSUserDefaults standardUserDefaults] setObject: array forKey:@"AnnotationKey"];
NSArray *archivedArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"AnnotationKey"] ;

编辑

好吧,可能它不适用于NSArray符合NSCopying协议的对象,但它可以说适用于符合NSCoding协议的对象,如Brad Larson在下面的答案中所指出的:

Storing custom objects in an NSMutableArray in NSUserDefaults

@H_772_37@

大佬总结

以上是大佬教程为你收集整理的ios – 将NSArray保存到NSUserDefaults无效全部内容,希望文章能够帮你解决ios – 将NSArray保存到NSUserDefaults无效所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。