Impossibile creare un'istanza della classe denominata MKMapView


165

Potrei fare qualcosa di veramente stupido qui come ho fatto prima e ha funzionato e ora ...

Creato un nuovo progetto iPad, nella vista dettagli ho aggiunto MKMapView, aggiunto MapKit.framework al progetto, aggiunto la proprietà / ecc. All'intestazione. Vai a eseguire il progetto e ottieni un SIGABRT con

**** Chiusura dell'app a causa dell'eccezione non rilevata 'NSInvalidUnarchiveOperationException', motivo: 'Impossibile creare un'istanza della classe denominata MKMapView' **

Ho trovato http://mithin.in/2009/06/22/using-iphone-sdk-mapkit-framework-a-tutorial/ ma, come ho detto, ho già aggiunto un framework. Cosa mi sto perdendo?

Risposte:


379

Mi sono imbattuto anche in questo, ma sono stato in grado di superarlo seguendo le istruzioni del passaggio 2 nel tuo link (grazie, a proposito):

  1. Aggiungi il framework MapKit al progetto. (Cartella Control + Click Frameworks -> Aggiungi -> Frame esistenti)

Ho appena cercato MapKit.framework, l'ho aggiunto al progetto e l'errore è scomparso.

Non ho ancora aggiunto alcun codice mappa (anche se ho un MapViewDelegate collegato in IB), ma finora funziona benissimo!


Sono contento che abbia aiutato! Alla fine sono riuscito a farlo nel modo seguente: - Pulisci progetto - Ripristina dispositivo - Riavvia la macchina Non sono sicuro di quale fosse necessario, ma funziona ora :)
tg2

1
L'aggiunta del framework MapKit ha funzionato anche per me. Il mio codice ha visualizzato la mappa e tutto ha funzionato bene.
finneycanhelp,

4
Se qualcuno ha riscontrato questo problema con xcode 4.2, stavo ottenendo l'errore anche se il framework appariva nella cartella Frameworks dopo averlo aggiunto. Ho cliccato sulla destinazione, poi su Build Phases e ho notato che non era nella sezione Link Binary with Library. Trascinandolo dalla cartella dei framework a quella sezione si è preso cura del problema. Grazie per il suggerimento,
Tim Stephenson,

1
È un po 'triste, che non ti avverta quando trascini (da Iterface Builder) una vista che non è collegata al tuo progetto.
Paul Brewczynski,

30

Fai clic sul progetto per visualizzare le impostazioni del progetto. In Target, fai clic sul tuo progetto, seleziona dalla barra degli strumenti superiore "Crea fasi". Nella scheda "Collega binario con librerie", vedrai l'elenco dei framework inclusi nel tuo progetto. Fai clic sul pulsante "+" e aggiungi la libreria MapKit dall'elenco mostrato al tuo progetto.


27

Per Xcode 6.1:

  • Seleziona il tuo progetto
  • Nella scheda generale, cerca Strutture e librerie collegate (ultima)
  • Premi il pulsante +
  • Cerca MapKit.framework
  • Infine aggiungi

17

Modo semplice!

Funziona sopra Xcode versione 7.2

Per quanto mi riguarda la selezione delle MAPPE dalle funzionalità collegherà automaticamente il tuo framework al tuo progetto, tutto ciò che devi fare è controllare il pulsante Mappe in Funzionalità -> Mappe .

Ecco lo screenshot allegato. Saluti!!

inserisci qui la descrizione dell'immagine


Questo funziona anche con Xcode versione 8. Dopo aver attivato "Maps" in "Funzionalità", indica che MapKit.framework sarà collegato. Puoi anche confermare questo andando su "Build Phases" ed espandendo la sezione "Link Binary With Libraries". Dovresti vedere anche MapKit.framework lì.
Ryan H.,

9

Per xCode 4.2:

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

3

Ho notato che stavo ricevendo questo messaggio (in aggiunta a quello originale menzionato in questo post) quando stavo costruendo ed eseguendo sul simulatore:

ld: avvertimento: ignorando il file /Users/peter/programming/iPhone/iNspector/MapKit.framework/MapKit, il file è stato creato per un formato di file non supportato che non è l'architettura da collegare (i386)

Quindi ho appena collegato il mio iPhone, ho creato e funzionato sul dispositivo e la mappa ha funzionato.

Quindi sembra che il framework MapKit non possa essere compilato sull'architettura 386, ha bisogno del dispositivo.


3

Per quanto riguarda l'input di @ futureshocked, mi sono anche imbattuto in

Id: avviso: ignorando il file /blah.../MapKit, il file è stato creato per un formato di file non supportato che non è l'architettura da collegare (i386)

problema.

** Verifica di non aver copiato il file MapKit framework nella directory del progetto locale quando è stato aggiunto al progetto. L'ho fatto per sbaglio e XCode mi stava dando l'errore sopra. Così l'ho rimosso dalla directory del mio progetto (nel Finder), ricompilato e tutto era di nuovo normale.

Se non hai il Framework nel tuo progetto, vai avanti e ricollegalo come indicato nella risposta sopra .

Ho trovato un buon tutorial per iniziare a utilizzare MapKit:
http://www.youtube.com/watch?v=X-3jM24EIGM&feature=related


3

Ho anche ricevuto questo errore durante il tentativo di distribuzione sul mio telefono 5.1 (con XC 4.5), anche dopo aver cambiato il mio obiettivo di distribuzione in 5.1. Sembra che l'aggiornamento delle mappe non volasse dal momento che avevo ancora Google Maps sul mio telefono. Dopo aver aggiornato il sistema operativo del mio telefono, l'eccezione è scomparsa.


Non dovrebbe essere sufficiente rimuovere i file con le definizioni delle mappe?
Konrad Viltersten,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.