У меня есть два подкласса NSManagedObject, полученных из сущностей, ActivityMember и Member.У члена есть свойство с именем name, а ActivityMember, через отношение один к одному с Member, имеет свойство под названием 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".
Если я добавлю временный атрибут memberName в ActivityMember, он больше не завершится с ошибкой, ноСвойство memberName всегда равно nil, хотя self.member.name оценивается как допустимая строка.
Мышление для переходных атрибутов может потребовать некоторого автоматического обновления, я также добавил следующее в ActivityMember, но безуспешно.
+ (NSSet *)keyPathsForValuesAffectingMemberName
{
return [NSSet setWithObjects:@"member.name", nil];
}
Возможно ли, что NSManagedObject использует свою магию KVO?Я установил точку останова внутри тела keyPathsForValuesAffectingMemberName, но она никогда не нарушалась.
Это похоже на обычный случай использования, но я не нашел хорошего сообщения по теме.