大佬教程收集整理的这篇文章主要介绍了swift – 使用NSManagedObject的keyPathsForValuesAffecting,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@dynamic firstName; @dynamic lastName; @dynamic department; + (NSSet *)keyPathsForValuesAffecTingFullName { return [NSSet setWithObjects:@"firstName",@"lastName",nil]; } - (NSString *)fullName { NSString *first = [self firstName]; NSString *last = [self lastName]; if (!first) return last; if (!last) return first; return [NSString StringWithFormat:@"%@ %@",first,last]; }
我在开发人员文档中找到了一个函数,但我无法理解如何实现此代码.
更明确一点,这是Apple doc
要为一对一关系自动触发通知,您应该覆盖keyPathsForValuesAffecTingValueForKey:或者实现一个合适的方法,该方法遵循它为注册依赖键定义的模式.
例如,人的全名取决于名字和姓氏.返回全名的方法可以写成如下:
- (NSString *)fullName { return [NSString StringWithFormat:@"%@ %@",firstName,lastName]; }
当firstName或lastName属性发生更改时,必须通知观察fullName属性的应用程序,因为它们会影响属性的值.
一种解决方案是覆盖keyPathsForValuesAffecTingValueForKey:指定人员的fullName属性依赖于lastName和firstName属性.清单1显示了这种依赖的示例实现:
清单1 keyPathsForValuesAffecTingValueForKey的示例实现:
+ (NSSet *)keyPathsForValuesAffecTingValueForKey:(NSString *)key { NSSet *keyPaths = [super keyPathsForValuesAffecTingValueForKey:key]; if ([key isEqualToString:@"fullName"]) { NSArray *affecTingKeys = @[@"lastName",@"firstName"]; keyPaths = [keyPaths setByAddingObjectsFromArray:affecTingKeys]; } return keyPaths; } class func keyPathsForValuesAffecTingValueForKey(_ key: String) -> NSSet
感谢你们对我的帮助.
这里的代码:
class Locataires: NsmanagedObject { @Nsmanaged var firstName: String @Nsmanaged var lastName: String var fullName: NSString { get { return firstName + lastName } } override class func keyPathsForValuesAffecTingValueForKey(key: String) -> NSSet { if key == «fullName « { let mesClefs = ["firstName","lastName"] return NSSet(array: mesClefs) } else { return super.keyPathsForValuesAffecTingValueForKey(key) } }
谢谢您的帮助一月
以上是大佬教程为你收集整理的swift – 使用NSManagedObject的keyPathsForValuesAffecting全部内容,希望文章能够帮你解决swift – 使用NSManagedObject的keyPathsForValuesAffecting所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。