Я получаю: Завершение приложения из-за необработанного исключения NSInvalidUnarchiveOperationException, причина: «Не удалось создать экземпляр класса с именем MKMapView» - PullRequest
6 голосов
/ 21 ноября 2011

Конечно, я гуглил и использовал поиск в stackoverflow. Я нашел несколько похожих обсуждений:

Не удалось создать экземпляр класса с именем MKMapView

http://forums.bignerdranch.com/viewtopic.php?f=49&t=490

NSInvalidUnarchiveOperationException: не удается декодировать объект класса (UITableViewCellContentView)

... и множество копий этого :)

Однако я использую не SDK 3.2, а 5.0 (одно из связанных обсуждений предполагает, что это было ошибкой в ​​какой-то бета-версии SDK 3.2).

Другие обсуждения и ответы показывают, что фреймворк MapKit не был включен должным образом. Я попытался включить его несколькими способами, следуя этим инструкциям.

Я все еще получаю эту ошибку. Это thown на

    [super loadView];

в моем собственном контроллере вида

- (void)loadView {

метод. Само представление строится в IB. Рядом с другими предметами есть MKMapView.

Я использую MKMapView в двух моих проектах xcode. Оба были запущены в xcode 3.2 и теперь перенесены в xcode 4. В одном из проектов код работает нормально, а в другом я получаю эту ошибку во время выполнения. Я не обнаружил каких-либо существенных различий между настройками этих проектов, которые могли бы объяснить мне такое поведение.

Текущий обходной путь - снять любой код (и элемент IB), связанный с представлением карты. Но, в конце концов, я бы предпочел включить этот вид карты, потому что он действительно служит цели :)

Любое предложение приветствуется.

Hermann

Ответы [ 2 ]

8 голосов
/ 16 марта 2012

Перейти к настройкам цели - не уровень проекта, а уровень цели. Нажмите «Фазы сборки», затем разверните «Связать двоичные файлы с библиотеками». Убедитесь, что MapKit.framework указан в списке, и добавьте его, если нет.

0 голосов
/ 21 августа 2016

С использованием Xcode 7.2 добавление Framework может быть сделано 3 способами.

1. В разделе Цели Выберите проект -> Нажмите Вкладка "Общие" -> Разверните Связанные фреймворки с библиотеками -> Нажмите значок + -> Поиск Для MapKit -> Нажмите Добавить.

2. Под Targets Выберите проект -> Нажмите на Возможности -> Под картами -> Нажмите кнопку переключения .

3. В разделе Targets Выберите проект -> Нажмите Этапы сборки -> Разверните Связанные фреймворки с библиотеками -> Нажмите значок + -> Поиск Для MapKit -> Нажмите Добавить.

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