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?

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!


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.


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

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


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

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.


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


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ął.


Czy nie powinno wystarczyć po prostu usunięcie plików z definicjami map?
Konrad Viltersten

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.