Основные данные IOS с KVO - valueForKey: для пользовательского свойства на подклассе NSManagedObject? - PullRequest
2 голосов
/ 31 мая 2011

У меня есть два подкласса 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, но она никогда не нарушалась.

Это похоже на обычный случай использования, но я не нашел хорошего сообщения по теме.

1 Ответ

0 голосов
/ 03 июня 2011

Это оказалось ошибкой пилота. В моей модели данных я не указал имя класса для ActivityMember. Тонкие, так как другие свойства работали нормально (магия отражения).

...