2011-05-10 66 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/ 

刪除您的應用程序的數據。

希望有幫助!