web-dev-qa-db-fra.com

Impossible d'instancier la classe nommée MKMapView

Je suis peut-être en train de faire quelque chose de vraiment stupide comme je l'ai déjà fait auparavant et cela a fonctionné et maintenant ...

Création d'un nouveau projet iPad, dans la vue de détails, j'ai ajouté un MKMapView, ajouté le fichier MapKit.framework au projet, ajouté la propriété/etc. à l'en-tête. Allez lancer le projet et obtenez un SIGABRT avec

**** Application fermée en raison d'une exception non interceptée 'NSInvalidUnarchiveOperationException', raison: 'Impossible d'instancier la classe nommée MKMapView' **

J'ai trouvé http://mithin.in/2009/06/22/using-iphone-sdk-mapkit-framework-a-tutorial/ mais, comme je l'ai dit, j'ai déjà ajouté un cadre. Qu'est-ce que je rate?

161
tg2

J'ai aussi rencontré ce problème, mais j'ai réussi à le dépasser en suivant les instructions de l'étape 2 de votre lien (merci, au fait):

  1. Ajoutez le framework MapKit au projet. (Ctrl + clic sur le dossier Frameworks -> Ajouter -> Frameworks existants)

Je viens de rechercher MapKit.framework, de l'ajouter au projet et l'erreur est partie.

Je n'ai pas encore ajouté de code de carte (bien que j'ai un MapViewDelegate connecté à l'IB), mais ça fonctionne très bien jusqu'à présent!

375
JoBu1324

Cliquez sur votre projet pour apporter les paramètres du projet. Sous Cibles, cliquez sur votre projet, sélectionnez dans la barre d’outils supérieure "Construire les phases". Sous l'onglet "Link binary With Libraries", vous verrez la liste des frameworks inclus dans votre projet. Cliquez sur le bouton "+" et ajoutez la bibliothèque MapKit de la liste affichée à votre projet.

28
Alice

Pour Xcode 6.1:

  • Sélectionnez votre projet
  • Dans l'onglet Général, recherchez Frameworks and Libraries (le dernier)
  • Appuyez sur le bouton +
  • Rechercher MapKit.framework
  • Enfin ajouter
27
marc_aragones

Moyen facile!

Fonctionne au-dessus de la version 7.2 de Xcode et testé jusqu'à la version bêta de Verion xCode 10

En ce qui me concerne, le choix de MAPS parmi les fonctionnalités liera automatiquement votre infrastructure à votre projet. Il vous suffit de cocher le bouton Cartes dans -> Cartes .

Voici la capture d'écran ci-jointe. Salut !!

enter image description here

16
dreamBegin

Pour xCode 4.2:

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

J'ai remarqué que je recevais ce message (en plus du message original mentionné dans ce message) lorsque je construisais et que je courais sur le simulateur:

ld: avertissement: ignorant le fichier /Users/peter/programming/iPhone/iNspector/MapKit.framework/MapKit, le fichier a été créé pour un format de fichier non pris en charge qui n'est pas l'architecture reliée (i386).

Ensuite, je viens de connecter mon iPhone, créer et exécuter sur l'appareil, et la carte a fonctionné.

Il semble donc que le framework MapKit ne puisse pas être compilé sur l'architecture 386, il a besoin du périphérique.

3
futureshocked

En ce qui concerne l'entrée de @ futureshocked, je suis également tombé sur le

Id: avertissement: en ignorant le fichier /blah.../MapKit, le fichier a été créé pour un format de fichier non pris en charge qui n'est pas l'architecture en cours de liaison (i386).

problème.

** Vérifiez que vous n'avez pas copié le framework MapKit dans votre répertoire de projet local lorsque vous l'avez ajouté à votre projet. J'ai accidentellement fait cela et XCode me donnait l'erreur ci-dessus. Je l'ai donc supprimé de mon répertoire de projet (dans le Finder), recompilé et tout était redevenu normal.

Si vous n'avez pas le cadre dans votre projet, allez-y et reconnectez-vous comme indiqué dans le réponse ci-dessus .

Vous avez trouvé un bon tutoriel pour démarrer avec MapKit:
http://www.youtube.com/watch?v=X-3jM24EIGM&feature=related

3
ecurb33

J'ai également reçu cette erreur lors d'une tentative de déploiement sur mon téléphone 5.1 (avec XC 4.5), même après que ma cible de déploiement ait été définie sur 5.1. On dirait que la mise à jour des cartes ne volerait pas puisque Google Maps était toujours sur mon téléphone. Après la mise à jour du système d'exploitation de mon téléphone, l'exception a disparu.

3
RonTor

Importez le WebKit lors de vos phases de construction. You need to import the WebKit

2
Naloiko Eugene