目标C:如何在应用程序启动时将静态数据存储到Core Data

Zhe*_*hen 3 static core-data objective-c ios

我打算使用Core Data来存储由具有属性的对象组成的静态数据列表(例如object = person,attributes = weight,height等).

关于什么是最好的方法来建议?我应该使用什么原始文件格式以及将原始文件中的数据加载到核心数据的最佳方法是什么?

感谢任何建议和帮助

Eim*_*tas 6

我建议发送包含初始数据的二进制.plist文件,并在第一次启动时将其转储到CoreData.

如果您的列表是不可变的,我也建议您不要使用CoreData.只需在app启动时阅读plist并将其保存在AppDelegate的实例var中.

更新(反映评论): 如果它是几千条记录 - 你应该将它导入核心数据,因为它会提高数据retreval的性能.另外 - 我不建议将所有这些都留在记忆中.

要将数据导入plist,您可以使用其他一些编程语言从数据库中选择所有数据并将其导出到xml plist(几乎所有编程语言都有库).然后使用属性列表编辑器,您可以将其导出到二进制plist.

然后根据您需要对数据执行的操作 - 您可以在后台导入它,或者在使用主线程导入时向用户显示进度指示器/栏.我相信plist会占用几MB.此外 - 尝试对一千条记录进行基准测试,以获得数据导入所需时间的近似估计.


Tec*_*Zen 6

如果数据集很大,则应在应用程序包中包含预先填充的SQLite存储.

在Xcode中创建一个单独的项目并导入数据模型和NSManagedObject子类文件(如果有的话).编写代码以导入或创建静态数据并将其全部写入持久性存储.

将持久性存储文件复制/添加到发布项目.在发布项目中,使用将商店路径设置为应用程序包中商店文件的位置[NSBundle pathForResourse:Type].在持久性商店选项中,将商店标记为readonly.

这样您就可以设置一个预先填充的,只读的Core Data堆栈,它可以为您有效地处理数千个对象.