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

Iphone 如何将自定义数组保存/重新加载到plist,iphone,cocoa-touch,ios,plist,Iphone,Cocoa Touch,Ios,Plist,我从sqlite数据库加载数据,将从那里加载的值存储在自定义类的实例变量中,然后将该类添加到可变数组中,然后将该数组分配给视图控制器的实例变量,以便在tableview中使用 不过,我希望在应用程序第一次运行时将此数组保存到documents目录中的.plist文件中,这样我就可以在加载时从那里检索整个对象,而不是从数据库中提取所有214项 这是一个更好的选择吗?如果是这样的话,有人能帮我提供一些代码,让我将自定义类的数组保存为.plist文件吗?我在网上遇到了很多示例代码,但没有一个是正确的

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

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

这是一个更好的选择吗?如果是这样的话,有人能帮我提供一些代码,让我将自定义类的数组保存为.plist文件吗?我在网上遇到了很多示例代码,但没有一个是正确的

我想:

  • 检查my_data.plist文件是否存在
  • 如果它存在,则将其作为数组读入
  • 如果没有,则将数据从sqlite db读取到数组中
  • 将此数据保存到.plist,以便以后可以更快地读取
谢谢各位,感谢你们能给我的任何帮助。

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

记录在案的是:


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

还要注意的是,一旦将这些对象保存到磁盘上的plist,实际上会影响程序的性能,因为将对象写入磁盘两次,从磁盘读取对象两次。您还将介绍在发生错误或崩溃时plist和数据库之间出现差异的机会


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

,您运行的示例代码以何种方式不能正常工作?密码是什么?你运行它时发生了什么?谢谢,我将查看链接并测试它。谢谢,非常感谢。