166 votes

Impossible d'instancier la classe nommée MKMapView

Je fais peut-être quelque chose de vraiment stupide ici, car je l'ai déjà fait auparavant et cela a fonctionné et maintenant...

J'ai créé un nouveau projet iPad, dans la vue détaillée j'ai ajouté un MKMapView, ajouté le MapKit.framework au projet, ajouté la propriété / etc. à l'en-tête. J'exécute le projet et j'obtiens un SIGABRT avec le message suivant

****Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason : 'Could not instantiate 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é le cadre. Que me manque-t-il ?

381voto

JoBu1324 Points 3042

J'ai rencontré ce problème également, mais j'ai pu le résoudre en suivant les instructions de l'étape 2 de votre lien (merci, d'ailleurs) :

  1. Ajoutez le cadre MapKit au projet. (Control + Click Frameworks dossier -> Add -> Existing Frameworks)

J'ai juste cherché MapKit.framework, je l'ai ajouté au projet, et l'erreur a disparu.

Je n'ai pas encore ajouté de code de carte (bien que j'aie un MapViewDelegate connecté dans IB), mais cela fonctionne bien jusqu'à présent !

0 votes

Content que ça ait aidé ! J'ai finalement réussi à le faire fonctionner en faisant ce qui suit : - Nettoyer le projet - Réinitialiser le dispositif - Redémarrer la machine Pas sûr de ce qui était nécessaire, mais ça marche maintenant :)

1 votes

L'ajout du cadre MapKit a également fonctionné pour moi. Mon code a fait apparaître la carte et tout a bien fonctionné.

4 votes

Si quelqu'un rencontre ce problème avec xcode 4.2, je recevais l'erreur même si le framework apparaissait dans le dossier Frameworks après l'avoir ajouté. J'ai cliqué sur la cible, puis sur Build Phases, et j'ai remarqué qu'il n'était pas dans la section Link Binary with Library. En le faisant glisser du dossier Frameworks vers cette section, le problème a été résolu. Merci pour l'astuce,

31voto

Alice Points 222

Cliquez sur votre projet pour faire apparaître les paramètres du projet. Sous Targets, cliquez sur votre projet, sélectionnez dans la barre d'outils supérieure "Build 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.

0 votes

Je tiens à préciser que ce problème est très difficile à détecter, car les applications fonctionnent bien lorsqu'elles sont lancées en mode débogage à partir de XCode. Les applications échouent lorsqu'elles sont lancées directement sur un appareil/émulateur (par exemple : en tapant sur l'icône).

10voto

SumiSadiq Points 216

Pour xCode 4.2 :

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

3voto

futureshocked Points 825

J'ai remarqué que j'obtenais ce message (en plus du message original mentionné dans ce post) lorsque je construisais et exécutais sur le simulateur :

ld : warning : ignoring file /Users/peter/programming/iPhone/iNspector/MapKit.framework/MapKit, le fichier a été construit pour un format de fichier non supporté qui ne correspond pas à l'architecture l'architecture liée (i386)

Ensuite, j'ai simplement connecté mon iPhone, construit et exécuté 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.

3voto

ecurb33 Points 141

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

Id : warning : ignoring file /blah.../MapKit, file was built for unsupported file format which is not the architecture being linked (i386)

question.

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

Si vous n'avez pas le Framework dans votre projet, allez-y et refaites les liens comme indiqué dans le document réponse ci-dessus .

J'ai trouvé un bon tutoriel pour commencer à utiliser MapKit :
http://www.youtube.com/watch?v=X-3jM24EIGM&feature=related

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X