gpt4 book ai didi

objective-c - 在 NSManagedObjectContextObjectsDidChangeNotification 中,NSUpdatedObjectsKey 和 NSRefreshedObjectsKey 有什么区别

转载 作者:搜寻专家 更新时间:2023-10-30 19:40:59 25 4
gpt4 key购买 nike

文档说;

NSUpdatedObjectsKey已更新对象集的键。

NSRefreshedObjectsKey在此上下文范围内已刷新但未弄脏的对象集的键。

这到底是什么意思。我只想知道发生了什么变化,所以我需要同时观看这两个键吗?

最佳答案

NSUpdatedObjectsKey 表示对象的属性已更改。但是,如果您将一个属性设置为已经存在的相同值,那么即使没有真正改变,它也会显示为 NSUpdatedObjectsKey。 (即 issue.issueId = issue.issueId 将导致对象被“更改”)。

NSRefreshedObjectsKey 表示该对象已从存储中重新获取。如果您同时使用多个上下文,则对象可能在您不注意时发生了变化。因此,在这些对象的上下文中调用 refreshObject:mergeChanges: 将导致它们从存储中重新获取。这并不意味着它们发生了变化——但它们可能发生了变化。

关于使用它们,我不确定您为什么需要它们。自 NSPersistentContainer 以来,我根本没有任何理由使用 NSManagedObjectContextDidSaveNotification,因为 NSPersistentContainer 为我管理所有上下文合并和更新。当我确实管理自己的核心数据堆栈时,我大多只是将整个通知传递给 mergeChangesFromContextDidSaveNotification:。我从未调用过 refreshObject:mergeChanges:,因为我有其他方法可以确保上下文保持同步,所以我从来没有任何 RefreshedObjects。

我不确定是否回答了您的问题,希望对您有所帮助。

关于objective-c - 在 NSManagedObjectContextObjectsDidChangeNotification 中,NSUpdatedObjectsKey 和 NSRefreshedObjectsKey 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42015839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com