2013-07-28 2 views
0
@interface Account : NSManagedObject 
@property (strong, nonatomic) NSData *encryptedPassword; 

и я использовал @dynamic для этого свойстваИспользуя точечную нотацию на подкласс NSManagedObject вызвал UnrecoginzedSelectorException

@dynamic encryptedPassword; 

В я установить класс модели на счет

Но это вызывает это исключение, когда я пытаюсь получить доступ к зашифрованному паролю с использованием точечной нотации, например:

account.encryptedPassword 

При использовании KVC полностью нормально:

[account primitiveValueForKey:@"encryptedPassword"] 

Не могли бы вы рассказать мне, как это исправить?


Для следующего кода

@try { 
    NSLog(@"Primitive Value: %@", [account primitiveValueForKey:@"encryptedPassword"]); 
    NSLog(@"Value For Key: %@", [account valueForKey:@"encryptedPassword"]); 
    NSLog(@"Dot Notation: %@", account.encryptedPassword); 
} 
@catch (NSException *exception) { 
    NSLog(@"Found: %@", exception.reason); 
} 

Я получил

Примитивного Значение: < 0f43f1e0 c4c4e0ab 97c524f4 b8483430>

Найдено: [valueForUndefinedKey]: субъект счета не является ключевым значение кодирования для ключа «encryptedPassword».

+0

Какова ваша модель данных и работает 'valueForKey:'. – Wain

+0

Он определяется как двоичные данные, необязательные, и ничего больше, чем обычный атрибут. Oh и valueForKey: не работает. – Poligun

+1

И вы создали класс вручную, а не Xcode. В чем разница с автоматически сгенерированной версией? – Wain

ответ

1

Если класс создан правильно, он должен работать. Существует некоторая несоответствие между моделью и классом. Обычно это было бы наименованием атрибута (свойства). Восстановите класс из модели с помощью Xcode и сравните, чтобы найти разницу.

+0

Спасибо вам большое. Фактически после восстановления файла .h я нашел опечатку в оригинальной. – Poligun

Смежные вопросы