2011-05-10 68 views
15

我在Mac OS X应用程序中使用CoreData。改变一个实体后,我得到了以下错误:删除OS X上的CoreData存储?

The managed object model version used to open the persistent store is incompatible with the one that was used to create the persistent store.

我已经找到了这个问题的建议实施版本/迁移到应用程序,但我不感兴趣,我保存的数据全部答案。这不是一个不那么复杂的解决方案吗?像删除股票文件或类似的东西?如果是,该文件位于何处?

谢谢。

回答

18

如果你不想要数据,那么是的,你可以简单地删除旧文件并创建一个新文件。如果您的数据是基于文档的,那么文档本身应该被删除。如果您为整个应用程序使用单个存储(而不是基于文档),那么您应该查看创建存储对象的代码以查找位置。该模板将创建代码放入应用程序委托中,并且商店的默认位置为${HOME}/Library/Application Support/${APP_NAME}/

+0

完美地工作。谢谢。 – shadowhorst 2011-05-10 18:30:51

+1

嗯我的应用程序似乎不在这里。我能看到的其他地方? – binnyb 2011-12-21 21:33:12

+0

@binnyb您需要找到创建商店的代码。它将创建它存储文件的路径。 – ughoavgfhw 2011-12-22 02:05:25

4

在OS X 10.7狮子,当应用程序是沙箱,它被存储在:

~/Library/Containers/com.yourcompany.yourAppName/ 
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 

删除此数据的最简单方法是转到组织者,选择项目选项卡,然后单击导出数据的“删除...”按钮。

0

在Mac OS X 10.11.4和Xcode 7.3清洗固定的问题对我来说:

Product>Cleanķ

2

另外,对于OSX,使用Nsfilemanager通过使用lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator{...}中定义的url来删除该文件

在这个var persistentStoreCoordinator中,url将是d被定义为由persistentStoreCoordinator使用。您可以使用在那里定义的网址来删除旧商店。插入下面的代码。运行该项目,该文件将被删除。 然后删除代码以允许对象再次被存储并且不会每次都删除数据。

这里是我的lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator

let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("CocoaAppCD.storedata") 

发现这里是什么,我马上就把它的下面。

do{ 
    try NSFileManager.defaultManager().removeItemAtURL(url) 
} catch{ 
    print("could not delete file") 
} 

然后我点击运行。 It跑一次,然后我删除我只是做了,这样数据就不会每次都删除

0

尝试运行该应用程序在其他设备的模拟器,你以前没有使用过,看看代码是否有帮助你(即iPhone SE而不是iPhone 7)。如果是这样,那么删除损坏的文件夹应该有所帮助。打开终端并运行以下命令:

sudo rm -rf ~/Library/Developer/CoreSimulator/Devices 

以除去可能已损坏模拟器的数据,

sudo rm -rf ~/Library/Developer/XCode/DerivedData/ 

删除您的应用程序的数据。

希望有帮助!