【发布时间】:2023-03-24 16:05:01
【问题描述】:
我正在尝试向我的核心数据模型添加一个新实体(例如 B,具有两个“双重”属性),并与现有实体(例如 A)创建可选的多对多关系。我创建了包含新实体 B、现有实体 A 和一对多关系 A ->> B 的新模型修订版。这个新模型是默认模型。我创建了一个从 v2 到 v3 的映射模型(v1 -> v2 迁移工作正常,只是实体 A 的数据类型发生了变化),但没有为 A 与 B 的关系指定值表达式,也没有为 B 的属性指定值表达式。
当我运行应用程序时,我在尝试实例化托管对象模型managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain]; 时收到以下错误。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSMutableArray insertObject:atIndex:]: attempt to insert nil object at 0'.
问题可能是我没有在映射模型中为A与B的关系指定值表达式,但我认为没有必要,因为B是可选的,并且在模型的v2中不存在。如果我必须为关系指定值表达式,我该如何为不存在的(因为它在模型的 v2 中不存在)可选关系指定?
非常感谢任何帮助。
PS - 还有一个问题 - 是否需要映射模型,或者自动迁移是否足够智能以处理新实体和关系?
【问题讨论】:
-
我确定这是迁移的问题;使用新的核心数据启动工作正常。
-
想不通,所以我重新开始。以为我做了和以前一样的事情,但这次它有效。我所做的:i)创建了一个反向关系 A > B,ii)自动生成 B 实现文件,iii)从 v2 映射到 v3,没有为关系指定任何值表达式,我也没有指定从 v2 到 v3 的迁移策略(对于 v1 到 v3 是),iv)在 A 中手动添加 @property 以与 B 建立关系。希望这对其他人有所帮助。
标签: iphone ios core-data relationship core-data-migration