核心数据迁移失败了,但是发生了什么?

时间:2014-05-02 13:01:11

标签: core-data core-data-migration

我尝试使用映射模型迁移核心数据模型。它似乎找到了映射模型并且实际上在迁移中相当远,但我不确定。然而,最终它失败了一般错误,我不知道实际上出了什么问题。

我错过了the log中错误的原因,如果是,原因是什么?

1 个答案:

答案 0 :(得分:1)

您的验证失败。你可能已经想到了,核心数据

  1. 弄清楚它需要迁移持久存储
  2. 找到合适的映射模型FourToFive.cdm
  3. 开始迁移
  4. 稍后它失败了。错误不是通用的 - 它们非常具体。它们看起来都像这样(为了便于阅读):

    "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属性引起的。
    • 验证错误为1570NSValidationMissingMandatoryPropertyError(请参阅文档中的Core Data Constants Reference)。

    所以:TimeEntry的新版本似乎有一个名为startDate的非可选属性,但在五种情况下,您似乎正在迁移该属性的nil值。对此的简单修复包括使属性可选或在数据模型中设置默认值。但是你不能添加强制属性,也不能为它分配一些值。

    还有一条关于Failed to delete support directory for store的消息,我并不完全理解。迁移过程在建议之后继续进行,这不是你的问题,而且无论如何你的错误不会直接源于此。