Nie można utworzyć wystąpienia klasy o nazwie MKMapView

165

Być może robię tutaj coś naprawdę głupiego, tak jak robiłem to wcześniej i zadziałało, a teraz ...

Utworzono nowy projekt na iPada, w widoku szczegółów dodałem MKMapView, dodałem MapKit.framework do projektu, dodałem właściwość / itp. Do nagłówka. Idź, aby uruchomić projekt i zdobyć SIGABRT z

**** Zakończenie aplikacji z powodu niezłapanego wyjątku „NSInvalidUnarchiveOperationException”, przyczyna: „Nie można utworzyć instancji klasy o nazwie MKMapView” **

Znalazłem http://mithin.in/2009/06/22/using-iphone-sdk-mapkit-framework-a-tutorial/, ale, jak powiedziałem, już dodałem framework. czego mi brakuje?

tg2
źródło

Odpowiedzi:

379

Ja też to wpadłem, ale udało mi się to ominąć, postępując zgodnie z instrukcjami z kroku 2 w twoim linku (tak przy okazji):

  1. Dodaj strukturę MapKit do projektu. (Folder Control + Click Frameworks -> Add -> Existing Frameworks)

Właśnie wyszukałem MapKit.framework, dodałem go do projektu i błąd zniknął.

Nie dodałem jeszcze żadnego kodu mapy (chociaż mam MapViewDelegate podłączony w IB), ale jak dotąd działa dobrze!

JoBu1324
źródło
Cieszę się, że pomogło! W końcu udało mi się go uruchomić, wykonując następujące czynności: - Wyczyść projekt - Zresetuj urządzenie - Uruchom ponownie komputer Nie jestem pewien, co było konieczne, ale teraz działa :)
tg2
1
Dodanie frameworka MapKit również zadziałało. Mój kod wywołał mapę i wszystko działało dobrze.
finneycanhelp
4
Jeśli ktoś napotka ten problem z xcode 4.2, otrzymywałem błąd, mimo że framework pojawiał się w folderze Frameworks po dodaniu go. Kliknąłem na cel, a następnie na Fazy kompilacji i zauważyłem, że nie ma go w sekcji Połącz plik binarny z biblioteką. Przeciągnięcie go z folderu frameworks do tej sekcji rozwiązało problem. Dzięki za podpowiedź
Tim Stephenson,
1
To trochę smutne, że nie ostrzega cię, gdy przeciągasz (z Iterface Builder) widok, który nie jest połączony w twoim projekcie.
Paul Brewczyński
30

Kliknij projekt, aby wprowadzić ustawienia projektu. W obszarze Cele kliknij projekt, wybierz z górnego paska narzędzi „Fazy budowy”. W zakładce „Połącz pliki binarne z bibliotekami” zobaczysz listę frameworków zawartych w Twoim projekcie. Kliknij przycisk „+” i dodaj bibliotekę MapKit z wyświetlonej listy do swojego projektu.

Alice
źródło
27

W przypadku Xcode 6.1:

  • Wybierz swój projekt
  • Na karcie Ogólne poszukaj połączonych struktur i bibliotek (ostatnia)
  • Naciśnij przycisk +
  • Przeszukaj MapKit.framework
  • Wreszcie dodaj
marc_aragones
źródło
17

Łatwy sposób!

Działa powyżej Xcode w wersji 7.2

Jeśli chodzi o mnie, wybranie MAPS z możliwości automatycznie połączy twój framework z twoim projektem, wszystko co musisz zrobić, to zaznaczyć przycisk Mapy w Możliwości -> Mapy .

Oto załączony zrzut ekranu. Twoje zdrowie!!

wprowadź opis obrazu tutaj

tryKuldeepTanwar
źródło
Działa to również dla Xcode w wersji 8. Po włączeniu "Mapy" w "Możliwościach", oznacza to, że MapKit.framework zostanie połączony. Możesz to również potwierdzić, przechodząc do „Fazy tworzenia” i rozwijając sekcję „Połącz pliki binarne z bibliotekami”. Powinieneś tam również zobaczyć MapKit.framework.
Ryan H.
9

Dla xCode 4.2:

Click on your project name ->targets ->building Phase ->link binary with library 
  -> click on + sign ->select mapKit.framework ->click add
SumiSadiq
źródło
3

Zauważyłem, że otrzymywałem tę wiadomość (oprócz oryginalnej wspomnianej w tym poście), kiedy budowałem i uruchamiałem symulator:

ld: ostrzeżenie: ignorowanie pliku /Users/peter/programming/iPhone/iNspector/MapKit.framework/MapKit, plik został zbudowany dla nieobsługiwanego formatu pliku, który nie jest łączoną architekturą (i386)

Następnie po prostu podłączyłem mojego iPhone'a, zbudowałem i uruchomiłem na urządzeniu, a mapa działała.

Wygląda więc na to, że framework MapKit nie może być skompilowany na architekturze 386, potrzebuje urządzenia.

w przyszłości
źródło
3

Jeśli chodzi o dane wejściowe @ futureshocked, natknąłem się również na

Id: ostrzeżenie: ignorowanie pliku /blah.../MapKit, plik został zbudowany dla nieobsługiwanego formatu pliku, który nie jest podłączaną architekturą (i386)

kwestia.

** Sprawdź, czy nie skopiowałeś MapKitframeworka do lokalnego katalogu projektu po dodaniu go do projektu. Zrobiłem to przypadkowo i XCode dawało mi powyższy błąd. Usunąłem więc go z katalogu projektu (w Finderze), ponownie skompilowałem i wszystko znów było normalne.

Jeśli nie masz Framework w swoim projekcie, przejdź dalej i ponownie połącz, jak podano w odpowiedzi powyżej .

Znalazłem dobry samouczek dotyczący rozpoczynania pracy z MapKit:
http://www.youtube.com/watch?v=X-3jM24EIGM&feature=related

ecurb33
źródło
3

Otrzymałem również ten błąd podczas próby wdrożenia na moim telefonie 5.1 (z XC 4.5), nawet po zmianie celu wdrożenia na 5.1. Wygląda na to, że aktualizacja map nie poleciała, ponieważ wciąż mam Mapy Google w telefonie. Po aktualizacji systemu operacyjnego mojego telefonu wyjątek zniknął.

RonTor
źródło
Czy nie powinno wystarczyć po prostu usunięcie plików z definicjami map?
Konrad Viltersten
2

Proszę zaimportować WebKit na etapie tworzenia. Musisz zaimportować WebKit

Naloiko Eugene
źródło
Co to WebKitma wspólnego MKMapView?
Alejandro Iván