加载预加载到 Core Data 中的 SQLite 数据库
Posted
技术标签:
【中文标题】加载预加载到 Core Data 中的 SQLite 数据库【英文标题】:Load an SQLite Database preloaded into Core Data 【发布时间】:2018-10-31 15:59:33 【问题描述】:我在 SQLite 中预加载了一个数据库:“BenedictusCoreData.sqlite”。
我将它添加到 XCode 中的项目中。
我修改 BenedictusCoreData.xcdatamodeld 以创建与我预加载的 sqlite 的表和列具有相同名称和类型的实体和属性。
我在模拟器中运行该应用程序,而无需编写任何其他代码。我打印主包路径并转到应用程序的沙箱。在 /Library/Application Support/ 我找到三个文件: .sqlite .sqlite-shm .sqlite-wal
我打开 .sqlite 并且显然它是空的,但是 Xcode 已经创建了带有大写字母的表和列,在表名中添加了“Z”,在列名中添加了“Z”,除了添加新表“Z_METADATA " "Z_MODELCACHE", "Z_PRIMARYKEY"。
此时,我认为将我的 sqlite 从 bundle 复制到“Application Support”文件夹并重写文件并不是一个好主意,因为结构完全不同。
所以我不知道如何在您第一次打开应用程序时将 sqlite 预加载的数据库复制到 CoreData 中。
也许你能帮助我。
【问题讨论】:
【参考方案1】:在 appDelegate 中,您可以将默认的 .xcdatamodel 名称更改为您添加的名称。然后 xcode 将加载您预加载的数据 .sqlite 文件而不是默认文件。你应该搜索它有关于这个的教程
【讨论】:
可能是我没有解释清楚。我的sqlite没有CoreData生成的sqlite的结构。如果我按照你说的做,那么 Xcode 将加载一个没有“Z_METADATA”实体和一些其他实体和属性的 sqlite 文件。我认为这行不通。 Xcode 将采用您输入的内容,您创建的实体仅限于默认的 .xcdatamodel 如果您将其指向您的 .sqlite 文件,它将采用您的。试试看,将它指向新文件并不复杂。然后你读/写你导入的 sqllite 文件。 对不起,我一直在网上搜索“Swift change data model”和类似的东西,但我没能找到你的建议。 试试***.com/questions/31668137/…,如果我发现更多,我会添加到这个评论中 据我阅读和搜索,这是将现有的 xcdatamodel 传输到不同的 xcdatamodel,而不是将现有的 sqlite 文件传输到 xcdatamodel。以上是关于加载预加载到 Core Data 中的 SQLite 数据库的主要内容,如果未能解决你的问题,请参考以下文章
使用 SwiftUI 2.0 和 Core Data 预填充数据
如何使用 Restkit 和 Core Data 存储对象和种子预加载数据
在 Swift 中解析 CSV 文件并将其加载到 Core Data 中