ios - 带有KVO的iOS核心数据-valueForKey:NSManagedObject子类上的自定义属性?

标签 ios core-data key-value-observing

我有两个从实体派生的NSManagedObject子类ActivityMember和Member。成员具有一个称为名称的属性,而 Activity 成员通过与成员一对一的关系具有一个称为成员的属性。我试图在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指定类名。微妙,因为其他属性效果很好(反射的魔力)。

关于ios - 带有KVO的iOS核心数据-valueForKey:NSManagedObject子类上的自定义属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6191140/

相关文章:

ios - 如何将 JSON 数据保存到 iPhone

ios - 隐藏View的Navigation Bar push View是OK.but pop 可以看到黑条

ios - 删除设置

ios - 即使在 player.status == .readyToPlay 之后,AVPlayerItem.duration 仍返回 NaN

iphone - 使用 GDB 调试 iOS 应用程序

ios - 无法理解何时在 Coredata 中使用 int 或 string

ios - 很少有与故障相关的核心数据崩溃

ios - 通过 UITableView 编辑 NSManagedObjects 的现有解决方案?

ios - Swift 扩展中的 KVO

objective-c - 如何观察对象实例的创建/销毁?