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