如何解决带有KVO的iOS核心数据-valueForKey:对于NSManagedObject子类的自定义属性?
| 我有两个从实体派生的NSManagedObject子类ActivityMember和Member。成员具有一个名为名称的属性,而活动成员通过与成员一对一的关系具有一个称为成员的属性。我正在尝试在ActivityMember上创建一个名为name的自定义属性,该属性仅公开其成员的姓名,如下所示: ActivityMember.m:-(NSString *)memberName
{
if (!self.member) {
return nil;
}
return self.member.name;
}
ActivityMember.h:
@property (readonly) NSString *memberName;
当我的TableViewController子类将valueForKey:发送到ActivityMember的实例时,它失败并显示以下消息:
[<NSManagedObject 0x4d6c830> valueForUndefinedKey:]: the entity ActivityMember is not key value coding-compliant for the key \"memberName\".
如果我向ActivityMember添加一个临时memberName属性,它不会再失败,但是memberself属性始终为nil,即使self.member.name评估为有效字符串。
考虑到临时属性可能需要一些自动更新,因此我也将以下内容添加到ActivityMember中,但没有成功。
+ (NSSet *)keyPathsForValuesAffectingMemberName
{
return [NSSet setWithObjects:@\"member.name\",nil];
}
NSManagedObject是否有可能做自己的KVO魔术?我在keyPathsForValuesAffectingMemberName的主体内设置了一个断点,但是它从未中断过。
这似乎是一个常见的用例,但是我没有找到关于该主题的好帖子。
解决方法
原来这是飞行员错误。在我的数据模型中,我没有为ActivityMember指定类名。细微,因为其他属性效果很好(反射的魔力)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。