Не удалось создать экземпляр класса с именем MKMapView - PullRequest
161 голосов
/ 19 августа 2010

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

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

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

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

Ответы [ 9 ]

375 голосов
/ 25 августа 2010

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

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

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

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

28 голосов
/ 18 ноября 2012

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

27 голосов
/ 17 января 2015

Для Xcode 6.1:

  • Выберите ваш проект
  • На вкладке "Общие" найдите Связанные фреймворки и библиотеки (последняя)
  • Нажмите кнопку +
  • Поиск MapKit.framework
  • Наконец добавить
16 голосов
/ 26 июля 2016

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

Работает выше Xcode версии 7.2 и тестируется до версии Verion xCode 10 beta

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

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

enter image description here

9 голосов
/ 11 сентября 2012

Для xCode 4.2:

Click on your project name ->targets ->building Phase ->link binary with library 
  -> click on + sign ->select mapKit.framework ->click add
3 голосов
/ 04 октября 2012

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

3 голосов
/ 03 мая 2012

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

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

вопрос.

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

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

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

3 голосов
/ 30 ноября 2011

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

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

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

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

2 голосов
/ 26 октября 2017

Пожалуйста, импортируйте WebKit на ваших этапах сборки.You need to import the WebKit

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