核心数据反向关系未设置
Posted
技术标签:
【中文标题】核心数据反向关系未设置【英文标题】:Core Data inverse relation does not get set 【发布时间】:2010-09-06 12:13:54 【问题描述】:我有一个对象 A,它与 B 有一对多关系。B 有一个属性 A,它与 A 的 NSSet 成反比关系。
伪代码:
A类 NSSet *bConnections; B类 一个*一个连接;在模型中,我将关系设置为可选。对于A,关系定义为一对多,B处aConnection的逆和删除规则级联。
B 定义为可选,bConnection 的逆和删除规则无效。
当我创建对象并使用[aInstance setValue:setOfBs forKey:@"bConnections"]
将 Bs 的 NSSet 添加到 A 时,B 中的反比关系不会自动设置。我究竟做错了什么?不应该从 Core Data 自动更新吗?
对象初始化为:initWithEntity:entityDescription insertIntoManagedObjectContext:managedObjectContext
【问题讨论】:
【参考方案1】:您需要使用mutableSetValueForKey:
来获取关系的现有集合。然后,您修改该集合并自动设置正确的键值观察方法,以便维护对象图的完整性。
【讨论】:
【参考方案2】:我可能已经找到了解决办法;我确实更新了从 A 返回的现有 NSSet 以添加新的 B。当我分配一个新的 NSSet 并添加对象时,引用似乎没问题。这些对象是从外部 JSON 服务创建的,我想我可以只更新 A 中现有的 B 集,但是反向关系设置不正确。
【讨论】:
以上是关于核心数据反向关系未设置的主要内容,如果未能解决你的问题,请参考以下文章