【问题标题】:reason = "The model used to open the store is incompatible with the one used to create the store"reason = "开店的型号和开店的型号不兼容"
【发布时间】:2016-09-12 10:14:22
【问题描述】:

我正在使用核心数据创建 os x 应用程序。当我修改模型时。发生了图像中显示的错误。显示的原因是“用于打开商店的模型与用于创建商店的模型不兼容”;如何解决此错误。我通过清除 iOS 应用程序中的模拟器修复了同样的错误。如何在 os x 应用程序中解决此问题。

enter image description here

【问题讨论】:

    标签: macos core-data


    【解决方案1】:

    如果您查看设置persistentStoreCoordinator 的代码,它应该会告诉您对象的存储位置和文件名。 (Apple 模板中的默认位置由应用程序委托中的 applicationDocumentsDirectory 方法提供。)

    【讨论】:

      【解决方案2】:

      非基于文档的 Core Data 应用程序的数据存储通常位于~/Library/Application/Support/com.mydomain.myapp/CocoaAppCD.storedata

      重命名或删除此文件(取决于其内容是否为一次性)。

      重新启动您的应用程序将重新创建没有数据的文件,您可以开始根据新模型重新填充它。

      对于您的应用程序的生产版本,模型更改将需要正式的轻量级或大量迁移以保留用户的数据。

      【讨论】:

        【解决方案3】:

        为方便起见,在启动时,我将数据库的位置打印到控制台,如下所示:

            // Get / print location of database for use in testing / debugging
        
            let paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
            let path = paths[0] + "/LocalStore.sqlite"
            print(path.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines))
        

        除了易于查看之外,我还可以选择/复制/粘贴它以在 sqliteBrowser 中使用。

        【讨论】:

          【解决方案4】:

          通过单击键盘上的选项按钮选择 Finder 并从 Go 转到 Library。然后使用您的应用程序包标识符搜索库。删除文件夹。然后重新启动您的应用程序将重新创建没有数据的文件夹,您可以开始根据您的新模型重新填充它。

          【讨论】:

            猜你喜欢
            • 2016-04-19
            • 1970-01-01
            • 2012-01-27
            • 1970-01-01
            • 2017-03-13
            • 2011-12-26
            • 1970-01-01
            • 1970-01-01
            • 2014-06-05
            相关资源
            最近更新 更多