HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 合并之后的KVO通知.ChangesFromContextDidSaveNotification大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用KVO来观察NsmanagedObject的变化.正在观察的NsmanagedObject是主队列上的NsmanagedObject上下文的一部分.

当我在后台更新此对象(私有队列并发类型)上下文,然后将保存的更改合并到主队列上下文(在mergeChangesFromContextDidSaveNotification中)时,KVO通知将按预期方式触发.

但是,我预计通知只会针对实际更改的关键路径启动,而不是针对NsmanagedObject的所有关键字.即使没有改变,我正在收到KVO通知给对方的每个关键字.

这是设计还是我做错了?

在苹果文档中看不到任何东西….

解决方法

在OS X和iOS上,这是一个没有记录但观察到的行为,一个保存计数是对整个NsmanagedObject的改变,而不仅仅是不同的元素.您可以在openradar.appspot.com等网站上找到关于这个网站上的绑定等的各种后果的抱怨.这个问题也表现为明显的KVO触发是完全没有意思的.

处理问题的最简单的方法(好的,在“重新显示所有保存的所有内容之后,最简单的”,我发现一个优秀的第一个通过选项,直到有人抱怨)是监听通用保存通知,然后在每个更新的对象上调用-changedValues来选择您有兴趣触发具体更新的那些.

如果对您的用例来说,这绝对无效率,您可以使自定义访问器(mogenerator对此有很大的帮助),用于在编辑线程标记上收集的属性,以便更改所有您感兴趣的属性;并将其作为保存后的通知发送.

例如说我们有a professional sports team app是不断更新,在后台解析的JSON Feed.各种团队,玩家,游戏等的所有显示影响属性.NsmanagedObjects具有自定义访问器,在{playerStatsChanged,teamStatsChanged,leaguerankingsChanged,yadayadayadaChangeD}的结构中设置标志,对应于应用程序中的哪些页面需要在当前@L_674_26@后重新显示和解析线程完成.一旦它被保存,它将触发通过该标志设置结构的通用“更新这些屏幕”通知.在任何情况下,您可能将个别变更路径通知合并到某个更高级别的“更新此屏幕”类型逻辑,对吗?那么,对于大多数合理的用例来说,在属性设置级别上,几乎是最低的开销点.当然,对于任何反复@L_674_26@的更新设计,如我们的运动队应用程序在这里.

大佬总结

以上是大佬教程为你收集整理的ios – 合并之后的KVO通知.ChangesFromContextDidSaveNotification全部内容,希望文章能够帮你解决ios – 合并之后的KVO通知.ChangesFromContextDidSaveNotification所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。