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

165

Возможно, я делаю что-то действительно глупое, как раньше, и это сработало, а теперь ...

Создал новый проект iPad, в подробном представлении я добавил MKMapView, добавил MapKit.framework в проект, добавил свойство / etc в заголовок. Перейти к запуску проекта и получить SIGABRT с

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

Я нашел http://mithin.in/2009/06/22/using-iphone-sdk-mapkit-framework-a-tutorial/, но, как я уже сказал, я уже добавил фреймворк. Чего мне не хватает?

ЦГ2
источник

Ответы:

379

Я тоже столкнулся с этим, но мне удалось обойти это, следуя инструкциям шага 2 в вашей ссылке (спасибо, кстати):

  1. Добавьте каркас MapKit в проект. (Control + щелкните папку Frameworks -> Добавить -> Существующие рамки)

Я просто искал MapKit.framework, добавил его в проект, и ошибка исчезла.

Я еще не добавил код карты (хотя у меня подключен MapViewDelegate в IB), но пока он работает нормально!

JoBu1324
источник
Рад, что это помогло! Наконец-то я заработал, выполнив следующие действия: - Очистить проект - Сбросить устройство - Перезагрузить компьютер Не уверен, что было необходимо, но теперь это работает :)
tg2
1
Добавление фреймворка MapKit также работает для меня. Мой код поднял карту, и все работало нормально.
finneycanhelp
4
Если кто-то сталкивается с этой проблемой с xcode 4.2, я получаю сообщение об ошибке, даже если фреймворк появлялся в папке Frameworks после того, как я его добавил. Я щелкнул по цели, затем по фазам сборки и заметил, что ее нет в разделе «Связь двоичных данных с библиотекой». Перетаскивание его из папки frameworks в этот раздел решило проблему. Спасибо за подсказку,
Тим Стивенсон
1
Прискорбно, что он не предупреждает вас, когда вы перетаскиваете (из Iterface Builder) представление, которое не связано в вашем проекте.
Павел Бревчински,
30

Нажмите на ваш проект, чтобы открыть настройки проекта. В разделе «Цели» щелкните свой проект, выберите на верхней панели инструментов «Фазы сборки». На вкладке «Связать двоичные файлы с библиотеками» вы увидите список фреймворков, включенных в ваш проект. Нажмите кнопку «+» и добавьте библиотеку MapKit из показанного списка в ваш проект.

Алиса
источник
27

Для Xcode 6.1:

  • Выберите свой проект
  • На вкладке "Общие" ищите Связанные фреймворки и библиотеки (последняя)
  • Нажмите кнопку +
  • Поиск MapKit.framework
  • Наконец добавить
marc_aragones
источник
17

Простой способ!

Работает выше Xcode версии 7.2

Что касается меня, то выбор MAPS из возможностей автоматически свяжет вашу инфраструктуру с вашим проектом, все, что вам нужно сделать, это нажать кнопку Карты в Capabilities -> Maps .

Вот прикрепленный скриншот. Ура !!

введите описание изображения здесь

tryKuldeepTanwar
источник
Это также работает для версии Xcode 8. После включения «Карт» в разделе «Возможности» это указывает, что MapKit.framework будет связан. Вы также можете подтвердить это, перейдя в «Фазы сборки» и развернув раздел «Связать двоичные файлы с библиотеками». Вы также должны увидеть MapKit.framework.
Райан Х.
9

Для xCode 4.2:

Click on your project name ->targets ->building Phase ->link binary with library 
  -> click on + sign ->select mapKit.framework ->click add
SumiSadiq
источник
3

Я заметил, что получаю это сообщение (поверх оригинального, упомянутого в этом посте), когда я собирал и работал на симуляторе:

ld: warning: игнорировать файл

Затем я просто подключил свой iPhone, собрал и запустил на устройстве, и карта сработала.

Таким образом, кажется, что инфраструктура MapKit не может быть скомпилирована на архитектуре 386, ей нужно устройство.

futureshocked
источник
3

Что касается ввода @ futureshocked, я также натолкнулся на

Идентификатор: предупреждение: игнорирование файла /blah.../MapKit, файл создан для неподдерживаемого формата файла, который не связан с архитектурой (i386)

вопрос.

** Убедитесь, что вы не скопировали MapKitфреймворк в локальный каталог проекта, когда добавили его в свой проект. Я случайно сделал это, и XCode дал мне вышеуказанную ошибку. Поэтому я удалил его из каталога моего проекта (в Finder), перекомпилировал, и все снова стало нормально.

Если у вас нет Framework в вашем проекте, продолжайте и сделайте повторную ссылку, как указано в ответе выше .

Нашел хорошее руководство по началу работы с MapKit:
http://www.youtube.com/watch?v=X-3jM24EIGM&feature=related

ecurb33
источник
3

Я также получил эту ошибку при попытке развертывания на моем телефоне 5.1 (с XC 4.5), даже после изменения цели развертывания на 5.1. Похоже, обновление карт не произойдет, так как у меня все еще были Google Карты на моем телефоне. После обновления ОС моего телефона исключение исчезло.

RonTor
источник
Разве не достаточно просто удалить файлы с определениями карты?
Конрад Вилтерстен
2

Пожалуйста, импортируйте WebKit на ваших этапах сборки. Вам необходимо импортировать WebKit

Налойко Евгений
источник
При чем WebKitтут MKMapView?
Алехандро Иван