如何将自定义数组保存/重新加载到plist

时间:2011-02-24 20:44:43

标签: iphone cocoa-touch ios plist

我正在加载来自sqlite数据库的数据,将我从那里加载的值存储在自定义类的实例变量中,然后将此类添加到可变数组中,然后我将其分配给实例变量我的视图控制器,用于tableview。

但是,我希望将此数组保存到应用程序首次运行的文档目录中的.plist文件中,以便我可以在加载时从那里检索整个对象,而不是从数据库中提取所有214项

这种方法是更好的选择吗?如果是这样,有人可以帮我提供一些代码,允许我将自定义类的数组保存为.plist文件吗?我在网上看到了很多示例代码,但没有一个能正常工作。

我想:

  • 检查是否存在my_data.plist文件。
  • 如果存在,请将其作为数组读入。
  • 如果没有,请将sqlite数据库中的数据读入数组。
  • 将此数据保存到.plist中,以便以后更快地读取。

谢谢你们,感谢你们给我的任何帮助。

2 个答案:

答案 0 :(得分:3)

在启动时从数据库中获取值可能会更快。解析包含这些值的plist几乎肯定会花费更多的成本而不是从数据库中获取所有这些值,除非您必须使用从数据库中获取它们的查询非常慢。

另请注意,一旦将这些对象保存到磁盘上的plist中,您实际上会损害程序的性能,因为您将把对象写入磁盘两次并从磁盘读取两次。如果发生错误或崩溃,您还将在plist和数据库之间引入差异的机会。

也就是说,向自己证明这一点的唯一方法可能是实现和分析两个选项,并比较实际数字。查看上面的@ occulus链接,了解如何读取和写入plist的说明。要对您的应用进行个人定位,请尝试使用Instruments

答案 1 :(得分:0)

当我谷歌搜索“nsarray writetofile自定义对象”(没有引号)并点击结果中的第一个链接时,我找到了一个非常有用的页面。

为了记录,就是这样:

http://www.cocoabuilder.com/archive/cocoa/240775-saving-nsarray-of-custom-objects.html