Klasse mit dem Namen MKMapView konnte nicht instanziiert werden

165

Ich mache hier vielleicht etwas wirklich Dummes, wie ich es vorher gemacht habe und es hat funktioniert und jetzt ...

Erstellt ein neues iPad-Projekt, in der Detailansicht habe ich eine MKMapView hinzugefügt, das MapKit.framework zum Projekt hinzugefügt, die Eigenschaft / etc. zum Header hinzugefügt. Gehen Sie, um das Projekt auszuführen und erhalten Sie ein SIGABRT mit

**** Beenden der App aufgrund der nicht erfassten Ausnahme 'NSInvalidUnarchiveOperationException', Grund: 'Klasse mit dem Namen MKMapView konnte nicht instanziiert werden' **

Ich habe http://mithin.in/2009/06/22/using-iphone-sdk-mapkit-framework-a-tutorial/ gefunden, aber wie gesagt, ich habe bereits Framework hinzugefügt. Was vermisse ich?

tg2
quelle

Antworten:

379

Ich bin auch darauf gestoßen, aber ich konnte es überwinden, indem ich den Anweisungen von Schritt 2 in Ihrem Link gefolgt bin (übrigens danke):

  1. Fügen Sie dem Projekt das MapKit-Framework hinzu. (Strg + Klick auf Frameworks-Ordner -> Hinzufügen -> Vorhandene Frameworks)

Ich habe gerade nach MapKit.framework gesucht, es dem Projekt hinzugefügt und der Fehler ist verschwunden.

Ich habe noch keinen Kartencode hinzugefügt (obwohl ich ein MapViewDelegate in IB verbunden habe), aber es funktioniert bisher einwandfrei!

JoBu1324
quelle
Ich bin froh, dass es geholfen hat! Ich habe es endlich zum Laufen gebracht, indem ich Folgendes getan habe: - Projekt
bereinigen
1
Das Hinzufügen des MapKit-Frameworks hat auch bei mir funktioniert. Mein Code hat die Karte aufgerufen und alles hat gut funktioniert.
Finneycanhelp
4
Wenn jemand auf dieses Problem mit xcode 4.2 stößt, wurde der Fehler angezeigt, obwohl das Framework nach dem Hinzufügen im Frameworks-Ordner angezeigt wurde. Ich klickte auf das Ziel und dann auf Build-Phasen und stellte fest, dass es nicht im Abschnitt Binär mit Bibliothek verknüpfen war. Durch Ziehen aus dem Framework-Ordner in diesen Abschnitt wurde das Problem behoben. Vielen Dank für den Hinweis,
Tim Stephenson
1
Es ist irgendwie traurig, dass es Sie nicht warnt, wenn Sie eine Ansicht (aus dem Iterface Builder) ziehen, die in Ihrem Projekt nicht verknüpft ist.
Paul Brewczynski
30

Klicken Sie auf Ihr Projekt, um die Projekteinstellungen aufzurufen. Klicken Sie unter Ziele auf Ihr Projekt und wählen Sie in der oberen Symbolleiste "Phasen erstellen" aus. Auf der Registerkarte "Binär mit Bibliotheken verknüpfen" sehen Sie die Liste der in Ihrem Projekt enthaltenen Frameworks. Klicken Sie auf die Schaltfläche "+" und fügen Sie Ihrem Projekt die MapKit-Bibliothek aus der angezeigten Liste hinzu.

Alice
quelle
27

Für Xcode 6.1:

  • Wählen Sie Ihr Projekt aus
  • Suchen Sie auf der Registerkarte Allgemein nach verknüpften Frameworks und Bibliotheken (letzte).
  • Drücken Sie die + -Taste
  • Suchen Sie in MapKit.framework
  • Zum Schluss hinzufügen
marc_aragones
quelle
17

Einfacher Weg!

Funktioniert über Xcode Version 7.2

Wenn Sie MAPS aus Funktionen auswählen, wird Ihr Framework automatisch mit Ihrem Projekt verknüpft. Sie müssen lediglich die Schaltfläche Karten unter Funktionen -> Karten aktivieren .

Hier ist der beigefügte Screenshot. Prost!!

Geben Sie hier die Bildbeschreibung ein

tryKuldeepTanwar
quelle
Dies funktioniert auch für Xcode Version 8. Nach dem Einschalten von "Maps" unter "Capabilities" wird angezeigt, dass das MapKit.framework verknüpft wird. Sie können dies auch bestätigen, indem Sie zu "Phasen erstellen" gehen und den Abschnitt "Binär mit Bibliotheken verknüpfen" erweitern. Dort sollte auch das MapKit.framework angezeigt werden.
Ryan H.
9

Für xCode 4.2:

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

Ich habe festgestellt, dass ich diese Nachricht (zusätzlich zu der in diesem Beitrag erwähnten Originalmeldung) erhalten habe, als ich den Simulator erstellt und ausgeführt habe:

ld: Warnung: Ignoriert die Datei /Users/peter/programming/iPhone/iNspector/MapKit.framework/MapKit. Die Datei wurde für ein nicht unterstütztes Dateiformat erstellt, bei dem es sich nicht um die zu verknüpfende Architektur handelt (i386).

Dann habe ich einfach mein iPhone angeschlossen, das Gerät erstellt und ausgeführt, und die Karte hat funktioniert.

Es scheint also, dass das MapKit-Framework nicht auf der 386-Architektur kompiliert werden kann, sondern das Gerät benötigt.

Zukunftsschock
quelle
3

In Bezug auf die Eingabe von @ futureshocked bin ich auch auf die gestoßen

ID: Warnung: Wenn Sie die Datei /blah.../MapKit ignorieren, wurde die Datei für das nicht unterstützte Dateiformat erstellt, bei dem es sich nicht um die zu verknüpfende Architektur handelt (i386).

Problem.

** Stellen Sie sicher, dass Sie das MapKitFramework nicht in Ihr lokales Projektverzeichnis kopiert haben, als Sie es Ihrem Projekt hinzugefügt haben. Ich habe dies versehentlich getan und XCode hat mir den obigen Fehler gegeben. Also habe ich es aus meinem Projektverzeichnis (im Finder) entfernt, neu kompiliert und alles war wieder normal.

Wenn Sie das Framework nicht in Ihrem Projekt haben, verknüpfen Sie es erneut, wie in der obigen Antwort angegeben .

Es wurde ein gutes Tutorial für den Einstieg in MapKit gefunden:
http://www.youtube.com/watch?v=X-3jM24EIGM&feature=related

ecurb33
quelle
3

Ich habe diesen Fehler auch beim Versuch erhalten, auf meinem 5.1-Telefon (mit XC 4.5) bereitzustellen, selbst nachdem ich mein Bereitstellungsziel auf 5.1 geändert habe. Es sieht so aus, als würde das Karten-Update nicht funktionieren, da ich noch Google Maps auf meinem Handy hatte. Nach dem Aktualisieren des Betriebssystems meines Telefons verschwand die Ausnahme.

RonTor
quelle
Sollte es nicht ausreichen, nur die Dateien mit Kartendefinitionen zu entfernen?
Konrad Viltersten
2

Bitte importieren Sie das WebKit in Ihren Build-Phasen. Sie müssen das WebKit importieren

Naloiko Eugene
quelle
Was hat WebKitdas zu tun MKMapView?
Alejandro Iván