我在Mac OS X应用程序中使用CoreData。更改实体后,我收到以下错误:
用于打开持久性存储的托管对象模型版本与用于创建持久性存储的版本不兼容。
我发现此问题的所有答案都建议在应用程序中实现版本控制/迁移,但我对保存数据不感兴趣。那不是一个不那么复杂的解决方案吗?比如删除股票文件或类似的东西?如果是,该文件位于何处?
感谢。
答案 0 :(得分:21)
如果您不想要数据,那么是的,您只需删除旧文件并创建一个新文件即可。如果您的数据是基于文档的,则应删除文档本身。如果您对整个应用程序使用单个存储(而不是基于文档),那么您应该查看创建存储对象的代码以查找位置。模板将创建代码放在应用程序委托中,商店的默认位置位于${HOME}/Library/Application Support/${APP_NAME}/
。
答案 1 :(得分:5)
在应用程序为沙盒时,在OS X 10.7 Lion上,它存储在:
~/Library/Containers/com.yourcompany.yourAppName/
答案 2 :(得分:3)
我发现对于Mac OS X 10.8 / Xcode 4.6,数据存储在
下的派生数据文件夹中Users/*username*/Library/Developer/Xcode/DerivedData/*app name*-*random string*/Build/Products/Debug/*app name*.sqlite
删除此数据的最简单方法是转到管理器,选择项目标签,然后按衍生数据点击“删除...”按钮。
答案 3 :(得分:2)
或者,对于OSX,使用Nsfilemanager通过使用lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator{...}
在这个var persistentStoreCoordinator中,将定义一个设计用于persistentStoreCoordinator的url。您可以使用在那里定义的网址删除旧商店。插入以下代码。运行该项目,该文件将被删除。 然后删除代码以允许再次存储对象,而不是每次都删除数据。
这是我在lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator
let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("CocoaAppCD.storedata")
这是我立即放在它下面的东西。
do{
try NSFileManager.defaultManager().removeItemAtURL(url)
} catch{
print("could not delete file")
}
然后我点击了跑步。它运行了一次然后我删除了我刚刚创建的代码,以便每次都不会删除数据
答案 4 :(得分:0)
在带有Xcode 7.3的Mac OS X 10.11.4上清理修复了我的问题:
Product
> Clean
或 Shift ⌘ K
答案 5 :(得分:0)
在 macOS Big Sur (11.4) 中,可以在以下位置找到本地 NSPersistentCloudKitContainer 核心数据存储:
<块引用>~/Library/Containers/yourAppName/Data/CloudKit/