我面临着非常烦人的问题。我的 iPhone 应用程序正在从网络服务器加载数据。数据以 plist 形式发送,解析时需要使用 Core Data 将其存储到 SQLite 数据库。
问题是,在某些情况下,这些数据集太大(5000 多条记录),导入时间太长。更重要的是,当 iPhone 尝试暂停屏幕时,Watchdog 会终止该应用程序,因为它仍在处理导入并且在 5 秒内没有响应,因此导入永远不会完成。
我根据“高效导入数据”一文使用了所有推荐的技术http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Conceptual/CoreData/Articles/cdImporting.html和其他有关此的文档,但它仍然非常慢。
我正在寻找的解决方案是让应用程序挂起,但让导入在后面运行(更好的一个),或者完全阻止尝试挂起应用程序。或者有更好的想法也欢迎。
非常感谢任何有关如何克服这些问题的提示!
谢谢
您可能希望发送可供使用的 sqlite 文件,而不是将 plist 文件推送到手机。这有很多优点:
- 无需在手机上导入
- 更紧凑
如果您总是替换整个内容,只需覆盖设备中的持久存储即可。否则,您可能需要将已下载的所有 SQLite 维护为 plist 数组,然后使用它来将所有存储添加到 persistenceStoreCoordinator。
底线:使用几个预编译的 sqlite 文件并将它们添加到 persistenceStoreCoordinator 中。
您可以使用 iPhone 模拟器创建这些 CoreData-SQLite-Stores 或使用独立的 Mac 应用程序。您需要自己编写这两个内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)