2011-06-27 118 views
2

我向Core Data模型(iOS)添加了一個屬性。我是在第2版,所以我增加了一個新的模式和版本下保存新的屬性3.核心數據遷移失敗僅發佈版本

我的加載代碼標準(使用初始化一個initWithContentsOfURL: MOM我Bundle中我.momd目錄指向),然後傳遞一個MOM到NSPersistentStoreCoordinator

然後,我從App Store下載我的應用程序,運行它,然後嘗試測試遷移。輕量級遷移工作正常我的模擬器和我的電話在調試(拴在Xcode 4)。

然而,當我同步發佈版本使用iTunes(使用Xcode的「歸檔」功能),我的應用程序的數據存儲無法與此錯誤遷移:

Error Domain=NSCocoaErrorDomain Code=134130 "The operation couldn’t be completed. 
(Cocoa error 134130.)", reason=Can't find model for source store} 
更糟

的是,店裏丟失在某些無法逃脫的巫術狀態下 - 如果我重新連接設備並再次從Xcode安裝Debug版本,我無法「恢復」遷移。

上面的錯誤消息省略了有關我的實體的詳細信息。如果有幫助,我可以提供,但對於這裏可能出現的問題有什麼想法?我已經閱讀了關於這個錯誤代碼的所有問題,到目前爲止他們都未能產生結果。

我嘗試了手動遷移,但它也產生了一個錯誤。但是,由於我只向1個實體添加了1個屬性,因此輕量級遷移不起作用是沒有意義的。

回答

2

每當我看到這個問題時,在我的代碼或其他人看來,XCode已經進入某種與它在應用程序中部署的模型版本不佳的狀態。打開應用程序的發佈IPA存檔,並查看其中包含的文件是什麼mom。如果您看到以前的某個版本缺失,那可能是同樣的問題。至於解決方案,我有不同的結果;以下步驟的某些變化適用於我,但從未按照一致的順序進行。

  • 清潔&刪除該項目所得到的數據(請確保您有保存,以便在需要時可以symbolicate您發佈的應用程序的存檔)
  • 重命名以前的模型版本的文件(在Xcode),添加或刪除名稱和代表版本號的數字之間的空格(如果它有空格,則替換爲'_',如果它沒有空格,則嘗試添加一個空格)
  • 添加新版本的模型改變它的任何內容,並使其成爲'當前'版本

我知道這些步驟似乎就像抓住吸管一樣,這正是發生在我身上的感覺。你可能會考慮使用Apple的一個支持事件,很高興知道他們對這個問題的正式答案是什麼。

+0

瑞恩,謝謝你的回答。我最終根據您的建議搞清楚了 - 打開應用程序的存檔並查看其中的MOM文件。這讓我意識到事情並不正確! – makdad