我有一个对象(A)与另一个对象(B)有To-Many关系。 此外,B与A成反比关系。
当我删除B时,它仍显示在A的关系船计数上,除非我在删除前手动清除B的反向关系。 我希望它同步发生,所以我可以更新UITableView并删除B的行, 而不是等待MOC的保存操作完成。
如果没有手动清洁B的反转,有没有办法处理? (我有很多这些关系,这将是不好的做法,并且很难维护)
谢谢!
答案 0 :(得分:2)
如果您在Xcode的核心数据模型检查器中将B的反向关系的“删除规则”设置为“Nullify”,那么这应该会自动生效。
有关详细信息,请参阅“核心数据编程指南”中的Relationship Delete Rules。
答案 1 :(得分:1)
差不多5年后(现在在iOS 10),我偶然发现了同样的问题。
我决定优化'应用程序开始崩溃通过从几乎所有地方删除saveContext()
,认为内存中的表示保证是正确的(因为includesPendingChanges
默认为true
)。
但是我收到了描述的问题(因为稍后需要更新一些UITableView
,应用程序崩溃了。)
以下是四种不同的方法,其中任何一种都解决了我的问题: (根据我的判断从最好到最差排序)
processPendingChanges()
(NSManagedObjectContext
)refreshAllObjects()
(NSManagedObjectContext
)saveContext()
(正如其他人在评论中指出的那样)DispatchQueue.main.asyncAfter
)。 (这当然是迄今为止最糟糕的方法,你不应该实施它)
我仍然不确定的事情: