【发布时间】:2011-09-09 09:44:51
【问题描述】:
我似乎无法得到明确的答案:当您更改瞬态属性,然后调用保存时,是否应该触发 NSManagedObjectContextDidSaveNotification?在我的通知侦听器中,如何过滤掉这些来自瞬态属性更改的通知?
这就是我想要做的事情:我想在主线程中加载联系人列表,完成后,我想从地址簿中读取后台线程中的图像并将它们附加到联系人。从表面上看,这很好用:从联系人实体加载后,我使用调度队列循环遍历所有联系人,在通讯簿中找到他们的图像,并将它们保存在联系人的“contactImage”属性中(这是暂时的) .然后调度队列成功地重新加载 tableview(在主线程上)并且图像显示在联系人旁边。 问题是,如果我对在其中一个托管对象上调用“保存”的联系人执行任何操作(例如,我删除了其中一个联系人),则会为所有联系人调用 NSManagedObjectContextDidSaveNotification。我发现这是因为之前更改了 contactImage 属性...评论说“self.contactImage = img;”线使问题消失。这让我很惊讶,因为我认为保存通知只会为非瞬态属性调用。
谁能确认这是否是预期的行为?还是我做错了什么?如果是预期的,你如何过滤掉 NSManagedObjectContextDidSaveNotification 监听器中对瞬态属性的更新?我需要在侦听器中进行一些后处理,并且我不想为瞬态属性更新不必要地进行。我检查了 NSManagedObject 上的 changedValues 字典,但它似乎在侦听器内显示为空(因为只有瞬态属性发生了变化,我猜)。
谢谢。
【问题讨论】:
标签: core-data nsmanagedobject nsmanagedobjectcontext