Не вдалося створити екземпляр класу під назвою MKMapView


165

Я, можливо, тут роблю щось по-справжньому дурне, як я це робив раніше, і це працювало, і зараз ...

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

**** Додаток, що припиняє роботу через виняток, що не сприймається, "NSInvalidUnarchiveOperationException", причина: "Не вдалося інстанціювати клас з назвою MKMapView" **

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

Відповіді:


379

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

  1. Додайте до проекту рамку MapKit. (Управління + натисніть папку "Рамки" -> Додати -> Існуючі рамки)

Я просто шукав MapKit.framework, додав його до проекту, і помилка пішла.

Я ще не додав жодного коду карти (хоча у мене підключений MapViewDelegate в IB), але він працює добре зараз!


Рада, що це допомогло! Нарешті я змусив його працювати, зробивши наступне: - Очистити проект - Скинути пристрій - Перезавантажити машину Не впевнений, що було потрібно, але він працює зараз :)
tg2

1
Додавання основи MapKit також працювало для мене. Мій код вивів карту, і все працювало чудово.
finneycanhelp

4
Якщо хтось стикається з цією проблемою з xcode 4.2, я отримував помилку, навіть незважаючи на те, що фреймворк з'являвся у папці Frameworks після того, як я його додав. Я натиснув на ціль, потім на фази збірки, і помітив, що її немає в розділі Посилання Бінарне з бібліотекою. Перетягуючи його з папки фреймворків до цього розділу, вирішив проблему. Дякую за підказку,
Тім Стівенсон

1
Це сумно, що він не попереджає вас, коли ви перетягуєте (з Iterface Builder) погляд, який не пов'язаний у вашому проекті.
Пол Бревчинський

30

Клацніть на своєму проекті, щоб привести його настройки. У розділі Цілі натисніть проект, виберіть на верхній панелі інструментів «Фази збірки». На вкладці "Пов’язати бінарне із бібліотеками" ви побачите список фреймворків, включених у ваш проект. Натисніть кнопку "+" і додайте бібліотеку MapKit із показаного списку до свого проекту.


27

Для Xcode 6.1:

  • Виберіть проект
  • На загальній вкладці шукайте пов'язані рамки та бібліотеки (остання)
  • Натисніть кнопку +
  • Пошук у MapKit.framework
  • Нарешті додайте

17

Легкий шлях!

Працює над версією Xcode 7.2

Що стосується того, що вибір MAPS від можливостей автоматично зв’яже вашу рамку з вашим проектом, все, що вам потрібно зробити, це перевірити кнопку Карти в розділі Можливості -> Карти .

Ось доданий скріншот. Ура !!

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


Це також працює для версії 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

3

Я помітив, що я отримував це повідомлення (поверх оригіналу, згаданого в цій публікації), коли будував і працював на тренажері:

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

Тоді я просто підключив свій iPhone, створив і запустив на пристрої, і карта працювала.

Отже, здається, що каркас MapKit неможливо скласти на архітектурі 386, він потребує пристрою.


3

Щодо вкладу @ futureshocked, я також натрапив на

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

проблема.

** Перевірте, чи не скопіювали ви MapKitрамку в локальний каталог проектів, коли ви додали її до свого проекту. Я випадково зробив це, і XCode дав мені вищезгадану помилку. Тож я видалив його зі свого каталогу проектів (у Finder), перекомпілював і знову все було нормально.

Якщо у вашому проекті відсутня Рамка, продовжуйте та перейдіть за посиланням, як зазначено у відповіді вище .

Знайшов хороший підручник із початку роботи з MapKit:
http://www.youtube.com/watch?v=X-3jM24EIGM&feature=related


3

Я також отримав цю помилку при спробі розгортання на своєму телефоні 5.1 (з XC 4.5), навіть після зміни моєї цілі розгортання на 5.1. Схоже, оновлення карт не пролетить, оскільки я все ще мав Google Maps на телефоні. Після оновлення ОС мого телефону виняток зник.


Чи не повинно бути достатньо просто видалити файли з визначенням карти?
Конрад Вільтерстен

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.