可可 – NSManagedObject和KVO vs文档

可可 – NSManagedObject和KVO vs文档,第1张

概述我有一个自定义的NSManagedObject子类,比如说Person。我还有一个使用-addObserver注册的UIView:forKeyPath:options:context:观察Person的各种属性,其中一些是持久的,如“name”,而其他只是与Core Data无关的与KVO兼容的访问器,如“drink ”。 @interface Person : NSManagedObject{ 我有一个自定义的NSManagedobject子类,比如说Person。我还有一个使用-addobserver注册的UIVIEw:forKeyPath:options:context:观察Person的各种属性,其中一些是持久的,如“name”,而其他只是与Core Data无关的与KVO兼容的访问器,如“drink ”。

@interface Person : NSManagedobject{    BOol drinking;}@property (nonatomic,retain) Nsstring* name;@property (nonatomic,Readonly) BOol drinking;@end@implementation Person@dynamic name;...- (voID) getDrunk {    [self willChangeValueForKey: @"drinking"];    drinking = YES;    [self dIDChangeValueForKey: @"drinking"];}...@end

一切都奏效每当我发送-getDrunk或设置name属性时,视图都会被通知。我是一个快乐的人,除非我读到NSManagedobject docs哪个状态:

+ (BOol)automaticallyNotifIEsObserversForKey:(Nsstring *)key

Fact 1. YES if the receiver provIDes automatic support for key-value observing change notifications for key,otherwise NO.

Fact 2. The default implementation for NSManagedobject returns NO for modeled propertIEs,and YES for unmodeled propertIEs.

现在我正在努力从文档中解析上述两个事实。检查事实2是容易的,并且类Person确实为@“name”返回NO,对于@“喝”则返回YES。但是,当名称更改时,该视图会如何通知? KVO文件清楚地说,

Using automatic observer notifications,it is not necessary to bracket changes to a property with invocations of willChangeValueForKey: and dIDChangeValueForKey: when mutating propertIEs via key-value Coding and key-value Coding compliant methods.

所以,如果Person自动返回NO NONotificationsObserversForKey:对于@“name”,似乎我必须手动将名称setter放在will / dIDChangeValueForKey中:使KVO工作。但是,KVO工作正常。我失踪了什么NSManagedobject的自动覆盖是什么意思NotificationsObserversForKey:如果似乎没有改变标准的KVO行为,记录它?

请帮助我恢复我的理智。

解决方法 那么,NSManagedobject确实为name属性(以及 – name和 – setname:methods)提供了一个实现。我会假设Core Data提供的实现包括对willChangeValueForKey的调用:dIDChangeValueForKey :.

所以,虽然KVO是“自动的”,因为你没有必要做任何事情来使它工作,我可以想象它不是自动的,因为willChangeValueForKey:和dIDChangeValueForKey:被方法调用提供动态属性实现的NSManagedobject。

总结

以上是内存溢出为你收集整理的可可 – NSManagedObject和KVO vs文档全部内容,希望文章能够帮你解决可可 – NSManagedObject和KVO vs文档所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1038028.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存