【发布时间】:2014-11-18 15:55:06
【问题描述】:
我在 Swift 中使用 CoreData,我有两个实体。我们称他们为Item 和Tag。它们设置为基本的多对多(两者都有可选的项目/标签,无效,对多)关系,看起来类似于:
class Item: NSManagedObject {
// Rest of attributes
@NSManaged var tags: NSSet
}
设置关系可以正常工作,但是当我尝试删除项目时:
managedObjectContext.performBlockAndWait {
managedObjectContext.deleteObject(item)
managedObjectContext.save(/** it saves with no error */)
}
它删除了项目对象,但它的任何标签都没有被更新,如果我在其他地方获取它们,它仍然有项目中的项目,但显然不会出错。 (并且 Z2TAGS 表仍然显示被删除的项目 id)。
我尝试在删除之前自己手动更新关系,但这并没有改变我在更新关系然后删除对象后必须保存的任何内容。
虽然我确定出了点问题,但 CoreData 肯定不应该在基本的多对多和正确的逆设置的情况下进入这种状态?是 Swift 的问题吗?我错过了什么?
【问题讨论】: