我想保存大量数据到 CoreData ,我的数据资源在 CSV 格式。
我知道以下实现方法。
预加载的数据库需要导入到CoreData中,现在我正在通过这种方式工作,我已成功将CSV文件转换为SQLite文件并将其导入到捆绑包中,然后从捆绑到文档目录,而 NSPersistentContainer 将初始化。现在,我对此有一些疑问,如下所示。
请提出我需要做什么?我该如何实现呢?另外,如果您建议这样做的话,也很好。
答案 0 :(得分:0)
要提取SQLite数据库文件的可识别实体的版本,可以在模拟器中运行应用程序,并将生成文件的路径输出到控制台。然后,在完成核心数据的解析/保存所有记录后,使用Finder检索文件。
然后您可以将生成的SQLite文件捆绑在项目中,并准备使用。
答案 1 :(得分:0)
我认为解决方案不好。因为没什么问题
1)您的构建将会更大-您将无法修复它。而且用户加载应用程序的时间过长。
2)捆绑应用程序中将包含sqlite文件,这意味着您无法在运行时更改此数据库。
可以通过两种方式修复:
一种方式-在应用程序支持目录中使两个Core Data堆栈一个只读,第二个用sqlite读写。但这会使核心数据的工作复杂化。而且只有当您不需要更改数据存储在应用程序捆绑包中时,它才可用。
2种方法-将sqlite文件复制到应用程序目录,然后使用此方法。但是您将拥有一个文件的两个副本。
如果您以这种方式确定
1)您需要使简单的解析器仅在解包模式和模拟器下起作用。
2)您应该在关闭日志模式下设置Core Data(我们只需要sqlite文件)
How to disable WAL journal mode
options["journal_mode"] = "DELETE"
有关日记模式的更多信息
https://developer.apple.com/library/archive/qa/qa1809/_index.html
3)解析scv并在Simulator中获取sqlite文件
4)在资源中添加sqlite文件
但是我建议发出API请求,以及如何在您的应用程序中发送数据
1)您可以发送一些哈希值或最后更新,并且仅接收diff数据(不是全部)
2)您可以仅使用分页数据和支持哈希的数据询问此时数据的需求。