gpt4 book ai didi

ios - 在 NSManagedObject 中观察 NSNotification

转载 作者:行者123 更新时间:2023-11-28 20:11:03 26 4
gpt4 key购买 nike

我希望我的 NSManagedObject 监听来自计时器类的通知,该计时器类每秒都会发布一个 NSnotification。这是更新我的 NSManagedObject 中的值所必需的。

问题是 CD 生命周期超出了我的控制,我发现我收到了重复的 NSNotifications,这是由于 NSManagedObject 可能位于多个上下文中。

如何在我的 NSManagedObject 中可靠地监听这个通知?

最佳答案

这是 Core Data 工作方式的正常副作用。您正在创建多个表示相同基础数据的对象。他们都在注册相同的通知,所以他们都收到了。监听这样的通知不是一个好主意,因为这种重复是系统工作方式的基本组成部分。

如果应响应通知的对象都来自同一个托管对象上下文,则有变通办法。例如,要仅在父/子上下文设置中从根上下文获取对象时才监听通知,请执行类似

if ([[self managedObjectContext] parentContext] == nil) {
...register for notification
}

如果您不使用父/子上下文关系,您可以确定一个特定上下文是“那个”其托管对象收到通知,并将 [self managedObjectContext] 与之进行比较。

更好的解决方案是回避问题并在其他地方监听通知——或者只是更新计时器回调的值,而不使用通知。每当计时器触发时,更新对象的一个特定实例 上的值。这样您就会知道您正在对一个对象的一个​​地方进行更改。来自其他上下文的其他实例需要合并更改以获得新值。

关于ios - 在 NSManagedObject 中观察 NSNotification,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20251516/

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