带有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指定类名。细微,因为其他属性效果很好(反射的魔力)。