2014-05-02 63 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