【发布时间】:2016-09-12 10:14:22
【问题描述】:
我正在使用核心数据创建 os x 应用程序。当我修改模型时。发生了图像中显示的错误。显示的原因是“用于打开商店的模型与用于创建商店的模型不兼容”;如何解决此错误。我通过清除 iOS 应用程序中的模拟器修复了同样的错误。如何在 os x 应用程序中解决此问题。
【问题讨论】:
我正在使用核心数据创建 os x 应用程序。当我修改模型时。发生了图像中显示的错误。显示的原因是“用于打开商店的模型与用于创建商店的模型不兼容”;如何解决此错误。我通过清除 iOS 应用程序中的模拟器修复了同样的错误。如何在 os x 应用程序中解决此问题。
【问题讨论】:
如果您查看设置persistentStoreCoordinator 的代码,它应该会告诉您对象的存储位置和文件名。 (Apple 模板中的默认位置由应用程序委托中的 applicationDocumentsDirectory 方法提供。)
【讨论】:
非基于文档的 Core Data 应用程序的数据存储通常位于~/Library/Application/Support/com.mydomain.myapp/CocoaAppCD.storedata。
重命名或删除此文件(取决于其内容是否为一次性)。
重新启动您的应用程序将重新创建没有数据的文件,您可以开始根据新模型重新填充它。
对于您的应用程序的生产版本,模型更改将需要正式的轻量级或大量迁移以保留用户的数据。
【讨论】:
为方便起见,在启动时,我将数据库的位置打印到控制台,如下所示:
// 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 中使用。
【讨论】:
通过单击键盘上的选项按钮选择 Finder 并从 Go 转到 Library。然后使用您的应用程序包标识符搜索库。删除文件夹。然后重新启动您的应用程序将重新创建没有数据的文件夹,您可以开始根据您的新模型重新填充它。
【讨论】: