Этот класс не является ключевым значением, совместимым с кодировкой для ключа givenName
SO я имеет этот
- (void)loadView {
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString* databasePath = [documentsPath stringByAppendingPathComponent:@"ProxDeals.db"];
NSError *error;
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:databasePath];
if (fileExists==TRUE) {
[[NSBundle mainBundle] loadNibNamed:@"ProxDealsViewController" owner:self options:nil];
}
else {
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"ProxDeals.db"];
NSLog(@"%@",defaultDBPath);
success = [fileManager copyItemAtPath:defaultDBPath toPath:databasePath error:&error];
if (!success) {
NSAssert1(0, @"Failed to create writable database file with message '%@/.", [error localizedDescription]);
}
[[NSBundle mainBundle] loadNibNamed:@"UserRegistration" owner:self options:nil];
}
}
и эта ошибка:
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<ProxDealsViewController 0x5f22160> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key givenName.'
Я знаю, что я ничего не делаю в инициализации элемента UserRegistration, но я не знаю, как это исправить.
Ответы
Ответ 1
Это обычно означает, что что-то пытается получить доступ к @property "givenName".
Если вы делали что-то с IB, обычной причиной является то, что вы либо:
- удалил это свойство из класса,
но не удалили подключения в IB
пока
- ИЛИ: у вас есть владелец файла
объект установлен в неправильный класс (проверьте
свойства - разные, в зависимости от того, какую версию xcode вы используете, - чтобы найти имя класса
его набор как. Вероятно, вы скопировали/вклеили файл NIB и не изменили это поле в NIB), и вы подключили
для этого класса, но
фактический владелец файла - это что-то
отличается
Ответ 2
Эта проблема обычно возникает, когда существует несоответствие между IBOutlet
в файле NIB и файле .h.
Убедитесь, что у вас нет сломанных соединений в IB (они обычно появляются с желтым цветом и рядом с ними предупреждающий знак). Кроме того, перед созданием очистите проект (Продукт > Очистить в XCode 4), вы можете иметь устаревший скомпилированный файл.
Ответ 3
Это также случилось со мной после того, как я удалил элемент пользовательского интерфейса из файла nib и соответствующий IBOutlet из контроллера представления. Очистка проекта также не решила его.
Поэтому я удалил папки в папке DerivedData, которая была создана Xcode 4. Затем она сработала!
Ответ 4
Иногда очень сложно удалить приложение с устройства/симулятора, особенно когда вы сохранили данные и конфигурацию.
Чтобы решить эту проблему, для каждого ViewController
, для которого вы удалили файл .xib
, добавьте следующий код:
-(NSString*) nibName
{
return nil;
}
Ответ 5
Если у вас разные файлы storybord, и если у вас есть ссылки на выход с созданием точек в ваших заголовочных файлах, вы просто удаляете соединения, щелкнув правой кнопкой мыши на владельце файлов.
Владелец файлов- > Щелкните правой кнопкой мыши- > удалите ненужные выходные соединения.
очистить и запустить проект
Пройдите это для ясного объяснения. Этот класс не подходит для кодирования ключа для ключа