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

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

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

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

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

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 3

Для Xcode 6.1:

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

Ответ 4

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

Работает над версией Xcode 7.2

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

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

enter image description here

Ответ 5

Для xCode 4.2:

Click on your project name ->targets ->building Phase ->link binary with library 
  -> click on + sign ->select mapKit.framework ->click add

Ответ 6

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

ld: предупреждение: игнорирование файла /Users/peter/programming/iPhone/iNspector/MapKit.framework/MapKit, файл был создан для неподдерживаемого формата файла, который не является связанная архитектура (i386)

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

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

Ответ 7

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

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

Вопрос.

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

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

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

Ответ 8

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

Ответ 9

Импортируйте WebKit на фазах сборки. Вам нужно импортировать WebKit