【问题标题】:Migration options for preloaded sqlite database in iphone appiphone 应用程序中预加载的 sqlite 数据库的迁移选项
【发布时间】:2012-01-15 10:20:20
【问题描述】:

我的应用程序使用带有 coredata 绑定的预加载 SQLLite 数据库。我使用具有核心数据绑定/模型等的辅助应用程序创建预加载的数据库文件。我将预加载的数据库放入应用程序的资源文件夹中,并在应用程序首次运行时将其复制到可写文档文件夹中。

我的问题是关于迁移的。自从我的应用发布以来,我的用户一直在创建数据,在我的下一个版本中,我想更改数据模型并将一些数据迁移到新模型。我只是不确定最好的方法来做到这一点。我已经阅读了核心数据迁移方法,但它们似乎要求我的应用程序是核心数据项目,但事实并非如此(尽管我的辅助数据库创建应用程序是)。我是否必须通过对数据库发出直接 SQL 语句来手动执行此迁移?那么核心数据绑定呢,我必须手动更新它们吗?

我真的只是在寻找正确/最佳方向的指针。有什么建议?提前致谢!

【问题讨论】:

    标签: iphone sqlite core-data migration


    【解决方案1】:

    SQLLite 并没有像 Core Data 这样的数据迁移工具。除非你算上“ALTER TABLE”。如果迁移非常复杂,或者您认为将来会有更复杂的迁移,您可以制作一个或多或少与旧 SQLite 模型一致的 Core Data 模型并将其导入,然后迁移到更新的 Core Data模型,然后坚持下去。

    这可能比 ALTER TABLE 慢,或者至少“不快”。

    【讨论】:

    • 我遵循“ALTER TABLE”部分,这是我怀疑我必须做的。但我真的不明白你的意思是“你可以创建一个或多或少与旧 SQLite 模型一致的 Core Data 模型并导入它,然后迁移到新的 Core Data 模型,然后坚持使用它。”好像挺有意思的,能详细点吗?我正在将核心数据绑定与我当前的 SQLLite 数据库一起使用,这是否意味着我已经完成了创建与旧 SQLLite 模型对齐并导入到其中的核心数据模型的部分?
    • 如果没有看到您的代码,我不能确定,但​​是是的,听起来您有一个核心数据模型,只是在另一个应用程序中。还有很多代码要写,但会是更简单的代码。不幸的是,从 SQLite 导入到较旧的核心数据模型,然后让 Core Data 进行迁移会比手动迁移(直接到较新的核心数据模型或 SQLite)要慢。这可能会也可能不会,这取决于您的用户可以被说服等待多长时间,或者您是否可以在后台执行此操作并且应用程序的有用子集仍然可以运行。
    • 谢谢,感谢您的建议。
    猜你喜欢
    • 2011-09-17
    • 1970-01-01
    • 2011-10-05
    • 2019-05-19
    • 2011-05-13
    • 2019-06-08
    • 2010-11-26
    • 2017-05-06
    • 2018-03-19
    相关资源
    最近更新 更多