【发布时间】:2013-05-02 19:35:57
【问题描述】:
我正在使用一个 plist 文件,其中包含我的所有应用程序数据。该文件非常大,目前我在第一次启动时将所有内容加载到数组和字典中并将它们保存到 UserDefaults 中,这样我就不必再次触摸 plist。由于这大约需要 10 秒(iP4),我想知道是否有更快(更好)的方法来处理 plist。我用 Instruments 检查了整个创业公司,检查数百个条目实际上是最快的部分。将这些处理过的东西保存到 NSUserDefaults 中需要很长时间。
【问题讨论】:
-
你知道你几乎没有任何优势地重新生成 plist 吗?
NSUserDefaults也将信息存储在 plist 中。 -
您可以在 GCD 队列中完成所有工作。从一开始就创建一个普通的后台队列,给它一个块来完成你的 plist 工作。就像@H2CO3 建议的那样,将所有内容放在 NSUserDefault 中,并根据需要创建获取数据的方法。不需要放在两个地方。
-
这是因为你有很多很多的小数据,还是因为你有一些巨大的 NSData 对象?您不应该将它们保存在 plist(或 NSUserDefaults,它本身就是一个 plist)中。
-
为什么不直接将 plist 文件复制到应用程序支持并通过
NSDictionary而不是通过NSUserDefaults加载它? -
NSUserDefaults 不是为保存大量数据而设计的,为此我建议使用 sqlite3 数据库。
标签: ios objective-c plist