在我的数据模型中,我有用户和通知,一个用户可以有多个通知。 在"通知"中,用户关系的删除规则设置为"无效"。
当我删除记录时,我可以在controllerWillChangeContent中看到它实际上执行了删除,但随后立即执行同一记录的插入。 它似乎源于这种关系。
在执行保存更改请求中,如果我记录更改请求,我会得到:
<NSSaveChangesRequest: 0xff441e0> { inserts (), updates ((
"0xa95e9d0 <x-coredata://76F3..F8CF/User/p__af_1>"
)), deletes ((
"0xa983880 <x-coredata://76F34AF...BAF8CF/Notification/p__af_228>"
)) locks () }
所以我认为这看起来不错。它正在删除通知,并更新用户以说它不再具有该通知。
经过一番挖掘,我发现不需要的插入发生在AFIncrementalStore的-newValueForRelationship
中。 因此,由于某种原因,已删除的对象通过用户的关系返回。
如何确保删除的对象保持删除状态,并且newValueForRelationship
不会尝试重新插入它?
嗯,这就像设置 shouldFetchRemoteValuesForRelationship
返回 false 一样简单。 不能声称我明白为什么,这可能会回来咬我,但现在,它解决了这个问题。