Неизвестный класс и NSUnknownKeyException в Xcode 10 GM - PullRequest
0 голосов
/ 16 сентября 2018

Я скачал Xcode 10 GM, и мое приложение сразу падает при работе в симуляторе. Xcode говорит:

Unknown class _TtC7App-Name14ViewController in Interface Builder file.

Terminating app due to uncaught exception 'NSUnknownKeyException', 
reason: '[<UIViewController 0x7f944440c880> setValue:forUndefinedKey:]: 
this class is not key value coding-compliant for the key backgroundImage.'

Однако, когда я открываю свой проект в Xcode 9, ошибки не возникает, и мое приложение работает отлично. Я искал эту проблему, и я попробовал все, что другие люди предложили на stackoverflow. От проверки всех объектов раскадровки и соединений ограничений до проверки правильности классов и проверки наследования модуля от цели. Я также попробовал «Удалить все содержимое и настройки» в симуляторе и удалить папку DerivedData. Удаление backgroundImage в Storyboard и коде не помогло, потому что тогда я получил ту же ошибку, но с другим объектом из того же ViewController.

Кто-нибудь сталкивался с такой же проблемой и нашел решение?

РЕДАКТИРОВАТЬ: Когда я добавляю новый View Controller и устанавливаю для него "is initial ViewController", представление загружается в симуляторе. Как только я добавляю файл swift и устанавливаю класс в Интерфейсном Разработчике для этого нового ViewController, я получаю предупреждение Unknown Class. И когда я добавляю метку или любой объект, я получаю: Неизвестный класс AND NSUnknownKeyException. Так что определенно нет ничего плохого в конкретном ViewController или объекте. Если у кого-то была такая же проблема, пожалуйста, помогите мне. Я больше ничего не могу сделать с этим проектом: (

Инспектор идентификации ViewController

Исходный код раскадровки

1 Ответ

0 голосов
/ 22 сентября 2018

Проблема в том, что имя вашего проекта (и все, что из этого следует) не является чисто буквенно-цифровым ascii (в частности, оно содержит диакритический знак, символ "é").Это может все испортить тонкими способами.Я не знаю, почему Xcode 10 блокирует это, а Xcode 9 нет, но это так.

Решение состоит в том, чтобы изменить имя проекта и разрешить каскад переименования, который это вызывает.Затем отредактируйте отображаемое имя так, чтобы оно было таким, каким вы хотите;это имя приложения, с которым сталкиваются пользователи, и «é» в этом совершенно нормально.

...