如果我要更改的只是 SQL Db 的内容,如何执行核心数据迁移到现有应用程序?

Posted

技术标签:

【中文标题】如果我要更改的只是 SQL Db 的内容,如何执行核心数据迁移到现有应用程序?【英文标题】:How do I perform Core Data Migration to an existing app, if all I'm changing is the SQL Db's content? 【发布时间】:2013-06-21 09:23:49 【问题描述】:

我查看了很多网站和答案,但找不到任何针对我的问题的解决方案。

我不需要更改我的核心数据模型的架构,我只需要修改(添加一些)内容到当前的支持 SQL 数据库。

欢迎对此的任何指导。谢谢。

PS:我尝试了 Apple 文档,它们对我的帮助与 Mecury 上的阳光一样有用。

也请放轻松,我是初学者。

谢谢。

更新;

为了更清楚地了解我的问题,我的应用程序是这样工作的。我在应用程序上预加载了用户无法更改的静态信息,每天都有新内容。每个月,我都会推送一个更新,其中包含该月特有的全新内容。然而,当我的应用程序进入生产阶段时,在我为本月推送的更新中,我的用户抱怨他们无法访问当月的数据。这导致我通过推送通知向他们发送垃圾邮件,让他们删除应用程序并重新安装以访问新数据。

我该如何解决这个问题?我的架构保持不变,只有数据发生了变化。

【问题讨论】:

【参考方案1】:

如果我理解正确,您想预填充 Core Data 数据库?

如果您不关心现有应用程序上的预先存在数据,您可以制作具有相同型号的 iPhone 或 Mac 应用程序,并让它生成数据库,就像在这里解释 (Any way to pre populate core data?) 一样如果您想了解有关 Core Data 的更多信息 (http://pragprog.com/book/mzcd2/core-data),请在一本非常棒的书中推荐。

永远不要直接发出 SQL 请求,Core Data 以他自己的神奇方式工作。

【讨论】:

是的,我的计划是预填充核心数据数据库【参考方案2】:

不要直接在 SQLite 数据库上工作。通过NSManagedObjectContext 更改您的所有数据!要找到一个好的策略,请查看 Batch-Importing 中的示例。

更新:您实际上可以拥有两个 PersistentStore(一个仅包含静态数据(只读),另一个包含用户生成的数据)。您可以交换使用命令行实用程序预填充并从服务器下载的只读文件。但是,您不能在这两家商店之间建立直接关系。 我想说这取决于这个预填充存储中的数据量,您应该采用这种方式还是只使用 plist 并在您的用户数据存储中引用一些字符串常量。尝试使用 plist 来完成,因为这是更简单的方法。

【讨论】:

好的,这就是我更新我的 SQL 数据库的方法。我使用我编写的一个 mac 命令行应用程序,它将我的 JSON 解析为 SQL DB,然后我从我的应用程序中引用它。 嗯,你也可以在命令行应用程序中使用 Core Data,只要确保共享相同的模型。我不太确定你要去哪里......

以上是关于如果我要更改的只是 SQL Db 的内容,如何执行核心数据迁移到现有应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

mfc如何将编辑框内容插入sql数据库,编辑框成员m_name,数据库名link,表Table,列name,CDatabase db ??

db2 delete表数据如何恢复,表没有删除

如何利用PHP执行.SQL文件

oracle db 如何用一条sql查询2个时间之间的工作时间间隔

Azure Pipelines - CI/CD:如何针对 DB 执行文件夹中的所有 .sql 文件

db2cmd如何执行sql文件并传递参数?