Core data 核心数据迁移失败,但什么';发生什么事了?

Core data 核心数据迁移失败,但什么';发生什么事了?,core-data,core-data-migration,Core Data,Core Data Migration,我尝试用映射模型迁移我的核心数据模型。它似乎找到了映射模型,并在迁移过程中取得了相当大的进展,但我不确定。然而,最终它失败了,出现了一个一般性错误,我不知道到底出了什么问题 我是否遗漏了中错误的原因?如果是,原因是什么?验证失败。正如您可能已经发现的,核心数据 发现它需要迁移持久存储 找到合适的映射模型,FourToFive.cdm 开始迁移 但后来失败了。这些错误不是一般性的——它们非常具体。它们看起来都是这样的(为了可读性而包装): “Error Domain=NSCocoaErrorDom

我尝试用映射模型迁移我的核心数据模型。它似乎找到了映射模型,并在迁移过程中取得了相当大的进展,但我不确定。然而,最终它失败了,出现了一个一般性错误,我不知道到底出了什么问题


我是否遗漏了中错误的原因?如果是,原因是什么?

验证失败。正如您可能已经发现的,核心数据

  • 发现它需要迁移持久存储
  • 找到合适的映射模型,
    FourToFive.cdm
  • 开始迁移
  • 但后来失败了。这些错误不是一般性的——它们非常具体。它们看起来都是这样的(为了可读性而包装):

    “Error Domain=NSCocoaErrorDomain code=1570\”操作无法完成。
    (Cocoa错误1570.\“UserInfo=0x10a747bb0{NSValidationErrorKey=startDate,
    NSLocalizedDescription=无法完成操作。\u2019。(Cocoa错误1570。),
    NSValidationErrorObject=(实体:TimeEntry;id:
    0xd00000000008000e;
    数据:)}“,
    
    上面说的是

    • 验证失败(因为
      NSValidationErrorKey
      NSValidationErrorObject
    • 此错误出现在
      TimeEntry
      实体上
    • 该错误是由
      startDate
      属性引起的
    • 验证错误为
      1570
      ,即
      NSValidationMissingMandatoryPropertyError
      (请参见文档中的相关内容)
    因此:
    TimeEntry
    的新版本似乎有一个名为
    startDate
    的非可选属性,但在五种情况下,您似乎正在迁移该属性的nil值。简单的修复方法包括使属性成为可选的或在数据模型中设置默认值。但是,您不能添加强制属性,也不能不为其赋值

    还有一条关于
    未能删除存储的支持目录的消息,我不完全理解。迁移在该消息之后继续的事实表明,这不是您的问题,而且在任何情况下,您的错误都不是直接源于此。

    我将“操作无法完成”解释为代码的含义,这有点短视。非常感谢你的解释。但是startDate值不应该为nil,映射中有一个函数()来填充该字段。我将发布一个关于它的后续问题。
    "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>)}",