【问题标题】:Making Changes to Data Model with SQLite iOS使用 SQLite iOS 更改数据模型
【发布时间】:2011-10-31 16:00:06
【问题描述】:

我正在使用 CoreData 从预填充的 sqlite 数据库中读取数据。一切都很好,很漂亮,除非我决定要向 CoreData 模型添加另一个实体(以及向 sqlite 数据库添加另一个表)。我已经尝试了几件事,包括在 Xcode 中对模型进行更改,删除 sqlite 数据库,然后希望它像过去一样生成一个新的数据库。

但是无论我尝试了什么,我都会收到此错误:

开店模式与开店模式不兼容 创建商店。

也许我这样做的方式不正确,但 Xcode 似乎很难更改数据模型,这在您开发应用程序时对我来说没有意义。

【问题讨论】:

    标签: ios xcode core-data


    【解决方案1】:

    一般来说,如果您删除应用并重新创建它,项目附带的样板代码将为您生成一个新的(如您所说,兼容的)数据库。

    此外,CoreData 旨在用作具有持久性的对象图;它对生成的 SQLite DB 的处理是它自己的业务。

    如果您说的是:“我有一个有效的 CoreData 存储文件和模型,并且我正在尝试手动升级存储文件以匹配新模型”,那么您就违反了框架的规则.要将不兼容的存储转换为新模型,您需要使用versioning and mapping models(无需直接接触 SQLite DB)。

    【讨论】:

    • 我试过重置模拟器中的内容,但没有帮助。你的意思是把我的代码复制到某个地方,删除整个项目,开始一个新项目,然后导入我的代码就行了吗?很好的链接——谢谢!我去看看。
    • 您的 SQLite 存储文件是生成到手机上的本地目录(即您的应用程序的 Documents 目录)中,还是您尝试从 Resources 文件夹中使用它?因为从模拟器中删除应用程序肯定会从 Documents 目录中删除存储(这就是我最初的意思——删除整个项目会有点过分)。
    • 我正在使用资源文件夹中的数据库。我尝试从 Resources 文件夹和模拟器中删除数据库。
    • 在使用之前将数据库复制到 Documents 文件夹中(在复制之前检查是否存在,这样您就不会在启动时覆盖每个打开的应用程序)。当它在资源中时,您可能会在尝试对其进行操作(甚至是只读)时遇到权限问题。
    猜你喜欢
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 2014-03-02
    相关资源
    最近更新 更多