如何将自定义数组保存/重新加载到 plist
Posted
技术标签:
【中文标题】如何将自定义数组保存/重新加载到 plist【英文标题】:How to save / reload a custom array to a plist 【发布时间】:2011-02-24 20:44:43 【问题描述】:我正在从 sqlite 数据库加载数据,将从那里加载的值存储在自定义类的实例变量中,然后将此类添加到可变数组中,然后我将其分配给实例变量我的视图控制器,用于表格视图。
不过,我想在应用程序第一次运行时将此数组保存到文档目录中的 .plist 文件中,这样我就可以在加载时从那里检索整个对象,而不是从数据库中提取所有 214 个项目.
这种方法是更好的选择吗?如果是这样,有人可以帮我提供一些代码,让我将自定义类的数组保存为 .plist 文件吗?我在网上遇到了很多示例代码,但没有一个能正常工作。
我想:
检查 my_data.plist 文件是否存在。 如果存在,将其作为数组读入。 如果没有,则将 sqlite db 中的数据读入一个数组。 将此数据保存到 .plist 中,以便以后更快地读取。谢谢大家,感谢您能给我的任何帮助。
【问题讨论】:
您运行的示例代码在哪些方面没有正常工作?代码是什么?运行时发生了什么? 【参考方案1】:在启动时从数据库中获取值可能会更快。解析包含这些值的 plist 几乎肯定会比仅从数据库中获取它们的成本更高,除非您必须使用从数据库中获取它们的查询非常慢。
还要注意,一旦将这些对象保存到磁盘上的 plist 中,实际上会损害程序的性能,因为您将两次将对象写入磁盘并从磁盘读取它们两次。如果出现错误或崩溃,您还将介绍 plist 和数据库之间存在差异的机会。
也就是说,向自己证明这一点的唯一方法可能是实施和分析这两个选项,并比较实际数字。查看上面@occulus 的链接,了解如何读取和编写 plist 的说明。要分析您的应用,请尝试使用Instruments
【讨论】:
谢谢你,我会看一下链接并测试一下。【参考方案2】:当我在谷歌上搜索“nsarray writetofile 自定义对象”(没有引号)并点击结果中的第一个链接时,我发现了一个非常有用的页面。
为了记录,是这样的:
http://www.cocoabuilder.com/archive/cocoa/240775-saving-nsarray-of-custom-objects.html
【讨论】:
谢谢,非常感谢。以上是关于如何将自定义数组保存/重新加载到 plist的主要内容,如果未能解决你的问题,请参考以下文章