reason = "开店的型号和开店的型号不兼容"
Posted
技术标签:
【中文标题】reason = "开店的型号和开店的型号不兼容"【英文标题】:reason = "The model used to open the store is incompatible with the one used to create the store" 【发布时间】:2016-09-12 10:14:22 【问题描述】:我正在使用核心数据创建 os x 应用程序。当我修改模型时。发生了图像中显示的错误。显示的原因是“用于打开商店的模型与用于创建商店的模型不兼容”;如何解决此错误。我通过清除 ios 应用程序中的模拟器修复了同样的错误。如何在 os x 应用程序中解决此问题。
enter image description here
【问题讨论】:
【参考方案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。然后使用您的应用程序包标识符搜索库。删除文件夹。然后重新启动您的应用程序将重新创建没有数据的文件夹,您可以开始根据您的新模型重新填充它。
【讨论】:
以上是关于reason = "开店的型号和开店的型号不兼容"的主要内容,如果未能解决你的问题,请参考以下文章