核心数据连接表记录未以多对多关系删除

时间:2015-12-07 16:03:38

标签: ios core-data

我遇到核心数据多对多关系的问题,其中双方的删除规则都设置为Nullify。我发现当我检查SQL数据库时,连接表中还有应删除的记录。

这两个表代表播放列表和曲目。播放列表删除不会级联以自动删除每个曲目,因为每个曲目可以位于多个播放列表中。

播放列表中的曲目处于有序关系中。

正在从播放列表中删除曲目,并且正在删除播放列表和曲目,但数据库中的Z_6PLAYLIST_TRACKS表中仍有记录。

如何确保删除这些记录?

1 个答案:

答案 0 :(得分:0)

很可能完全删除没有传播到sqlite文件中,并且仍然位于两个缓存文件中的一个中。现在这很常见,因为Core Data正在使用sqlite和WAL模式。

顺便说一句,我不会担心Core Data中的表格。仅通过公共API访问核心数据。 SQLite文件的内部工作方式不是您应该尝试保持同步的。

如果您获得了预期获得的数据,并且您的删除正在为您提供预期的结果,那么这就足够了。只有当您遇到删除问题时,才应该研究SQLite文件的内部结构。

更新1

感谢测试用例,这是Core Data中的实际问题。那里没有你做错了什么。您真的需要在此处提交雷达,我也会提交一份。

在此期间,您可以停止使用有序关系(无论如何都是混蛋)或者进行双重删除。

就个人而言,我会将它从有序的关系中改变,因为它们表现糟糕并且显然存在问题。