2014-05-02 102 views
0

我嘗試用映射模型遷移我的核心數據模型。它似乎找到了映射模型,並且實際上在遷移過程中變得非常遠,但我不確定。然而,最後它失敗了,並且我不知道實際發生了什麼問題。核心數據遷移失敗,但發生了什麼?

我錯過了the log錯誤的原因,如果是,原因是什麼?

回答

1

您正在驗證失敗。正如你可能已經想通了,核心數據

  1. 圖出來,它需要遷移持久性存儲
  2. 找到合適的映射模型,FourToFive.cdm
  3. 開始

後來遷移但它失敗了。這些錯誤不是通用的 - 它們非常具體。他們都像這樣(爲了便於閱讀):

"Error Domain=NSCocoaErrorDomain Code=1570 \"The operation couldn\U2019t be completed. 
    (Cocoa error 1570.)\" UserInfo=0x10a747bb0 {NSValidationErrorKey=startDate, 
    NSLocalizedDescription=The operation couldn\U2019t be completed. (Cocoa error 1570.), 
    NSValidationErrorObject=<NSManagedObject: 0x10a7380f0> (entity: TimeEntry; id: 
    0xd00000000008000e <x-coredata://FB4CCC6C-6EB7-44DB-A3F2-F64E23C64827/TimeEntry/p2> ; 
    data: <fault>)}", 

它說的是,

  • 你有一個驗證失敗(因爲NSValidationErrorKeyNSValidationErrorObject
  • 此錯誤是在TimeEntry實體
  • 該錯誤是由startDate屬性引起的。
  • 驗證錯誤是1570,它是NSValidationMissingMandatoryPropertyError(請參閱文檔中的Core Data Constants Reference)。

所以:的TimeEntry新版本似乎有一個叫startDate非可選屬性,但正好5情況下,你似乎是遷移該屬性的零值。對此的簡單修復將包括使屬性可選或在數據模型中設置默認值。但是,您不能添加強制屬性,也不能爲其分配一些值。

還有一條關於Failed to delete support directory for store的消息,我不完全明白。即該消息後遷移將繼續表明,這不是你的問題,並且在任何情況下,你的錯誤,不從直接乾的事實。

+0

我解釋了「操作無法完成」爲代碼的含義,這是有點短視。非常感謝解釋。 startDate值不應該爲零,但映射中有一個FUNCTION()來填充該字段。我會發布關於它的後續問題。 – Nick