Iphone 如何在应用程序';什么是plist文件?

Iphone 如何在应用程序';什么是plist文件?,iphone,xcode,nsmutablearray,nsuserdefaults,fetch,Iphone,Xcode,Nsmutablearray,Nsuserdefaults,Fetch,我正在使用Fetch查询sqlite数据库中的行,并将结果加载到NSMutableArray myDataArray中。我想做的是将myDataArray中的值存储到应用程序的preferences plist文件中。但是当我运行下面的代码时,我得到以下错误: [NSUserDefaults setObject:forKey:]:尝试插入非属性值'( …(注意:包含50行值) )“属于”类“uu NSArrayM” 我正在使用相同的方法在plist文件中存储其他NSMutableArray,但无

我正在使用Fetch查询sqlite数据库中的行,并将结果加载到NSMutableArray myDataArray中。我想做的是将myDataArray中的值存储到应用程序的preferences plist文件中。但是当我运行下面的代码时,我得到以下错误:

[NSUserDefaults setObject:forKey:]:尝试插入非属性值'( …(注意:包含50行值) )“属于”类“uu NSArrayM”

我正在使用相同的方法在plist文件中存储其他NSMutableArray,但无法找到存储查询的数据库结果的方法

您可能会问:为什么要存储这些值,当我再次需要这些值时,只需重新查询数据库?原因是我正在从数据库中提取随机行,我需要完全按照最初随机的方式调用这些行

感谢您的帮助, lq


myDataArray中的项不是属性列表对象,因此无法自动序列化为plist

从以下方面:

值参数只能是 属性列表对象:NSData, NSString、NSNumber、NSDate、NSArray、, 或是字典。对于NSArray和 NSDictionary对象及其内容 必须是属性列表对象。看见 属性中的“什么是属性列表?” 列出编程指南

你可能想考虑一个除了用户默认之外的机制来存储这些数据。从:

许多应用程序需要一种机制 用于存储将被删除的信息 以后需要。情况 你需要储存少量食物的地方 持续数据的数量不到几个 百千字节属性列表提供 一种统一而方便的交通工具 组织、存储和访问 数据

在某些情况下,属性列表 架构可能被证明是不够的。 如果你需要一种方法来储存大量, 对象的复杂图形,对象不是 由属性列表支持 体系结构,或其 必须保留可变性设置, 使用归档。寻找 更多信息


谢谢你的快速回复。对我来说,使用存档似乎不是一个好的解决方案,因此我正在考虑重新设计应用程序,这样我就不会将所有50行数据拉入myDataArray,而是将PK_ID拉入一个数组,存储在plist中,然后使用谓词调用每个PK_ID一次提取每一行。
 ...
 fetchResults = [managedObjectContext executeFetchRequest:request error:&error];
 self.myDataArray = [NSMutableArray arrayWithArray:fetchResults];

 NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
 [userDefaults setObject:self.myDataArray forKey:kFetchResultsArray];