【发布时间】:2015-09-10 03:46:57
【问题描述】:
我一直试图在本地(通过 NSUserDefaults) 保存用户创建的 PFGeoPoints NSMutableArray。经过大量阅读和研究,我现在知道简单地用自定义数据保存数组是完全不可能的。我尝试了以下几种不同的方法:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *testArray = [[NSMutableArray alloc] init];
NSArray *checkArray = [[NSArray alloc] init];
testArray = locationList;
PFGeoPoint *test = [locationList objectAtIndex:0];
NSString *latString = [NSString stringWithFormat:@"%f",test.latitude];
[testArray insertObject:latString atIndex:0];
checkArray = testArray;
[defaults setValue:checkArray forKey:@"Locations"];
[defaults synchronize];
其中 locationList 是一个 NSMutableArray,已从 Parse 创建并设置为 PFGeoPoints。
我还尝试通过
将NSMutableArray 转换为NSData
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];
,但这仍然不起作用。每次我不断收到错误消息,告诉我以下内容:
Property list invalid for format: 200
(property lists cannot contain objects of type 'CFType')
我保存的NSMutableArray 是一个包含多个PFGeoPoints 的列表。我要做的就是将此数组保存到设备中,这样用户就不必在每次用户加载应用程序时重新创建整个列表 (render)(我正在使用云数据...不要试图在数据上花费太多)。
如果有人可以为我提供有关如何将此数据保存为数组的建议/解决方案(而不是将每一行分解为整数以表示 lat 和 long),或者如果有人可以建议@987654330 的有用替代方案@ (可能像 Core Data 或其他一些本地存储) 我将不胜感激。谢谢
【问题讨论】:
-
为什么不将数组作为 XML 文件保存在分配给应用程序的沙箱文件夹中?
标签: objective-c iphone arrays nsuserdefaults nsdata