No se pudo crear una instancia de la clase denominada MKMapView

165

Puede que esté haciendo algo realmente estúpido aquí como lo hice antes y funcionó y ahora ...

Creé un nuevo proyecto de iPad, en la vista de detalles agregué un MKMapView, agregué el MapKit.framework al proyecto, agregué la propiedad / etc. al encabezado. Vaya a ejecutar el proyecto y obtenga un SIGABRT con

**** Finalización de la aplicación debido a la excepción no detectada 'NSInvalidUnarchiveOperationException', razón: 'No se pudo crear una instancia de la clase llamada MKMapView' **

Encontré http://mithin.in/2009/06/22/using-iphone-sdk-mapkit-framework-a-tutorial/ pero, como dije, ya he agregado el marco. ¿Qué me estoy perdiendo?

tg2
fuente

Respuestas:

379

También me encontré con esto, pero pude superarlo siguiendo las instrucciones del paso 2 en su enlace (gracias, por cierto):

  1. Agregue el marco MapKit al proyecto. (Control + clic en la carpeta Frameworks -> Agregar -> Frameworks existentes)

Solo busqué MapKit.framework, lo agregué al proyecto y el error desapareció.

Todavía no he agregado ningún código de mapa (aunque tengo un MapViewDelegate conectado en IB), ¡pero hasta ahora funciona bien!

JoBu1324
fuente
Me alegro de que haya ayudado! Finalmente conseguí que funcionara haciendo lo siguiente: - Proyecto limpio - Reiniciar dispositivo - Reiniciar máquina No estoy seguro de qué era necesario, pero funciona ahora :)
tg2
1
Agregar el marco MapKit también funcionó para mí. Mi código apareció en el mapa y todo funcionó bien.
finneycanhelp
44
Si alguien se encuentra con este problema con xcode 4.2, recibí el error a pesar de que el marco aparecía en la carpeta Frameworks después de agregarlo. Hice clic en el objetivo, luego en Fases de construcción y noté que no estaba en la sección Enlace binario con biblioteca. Al arrastrarlo desde la carpeta de frameworks a esa sección se solucionó el problema. Gracias por la pista,
Tim Stephenson
1
Es un poco triste que no te advierta cuando arrastras (desde Iterface Builder) una vista que no está vinculada en tu proyecto.
Paul Brewczynski
30

Haga clic en su proyecto para traer la configuración del proyecto. En Objetivos, haga clic en su proyecto, seleccione en la barra de herramientas superior "Fases de compilación". En la pestaña "Enlace binario con bibliotecas", verá la lista de marcos incluidos en su proyecto. Haga clic en el botón "+" y agregue la biblioteca MapKit de la lista que se muestra a su proyecto.

Alicia
fuente
27

Para Xcode 6.1:

  • Selecciona tu proyecto
  • En la pestaña general, busque Marcos vinculados y bibliotecas (último)
  • Presione el botón +
  • Buscar MapKit.framework
  • Finalmente agregue
marc_aragones
fuente
17

¡Manera fácil!

Funciona por encima de Xcode versión 7.2

En lo que a mí respecta, seleccionar las MAPAS de las capacidades vinculará automáticamente su marco a su proyecto, todo lo que tiene que hacer es marcar el botón Mapas en Capacidades -> Mapas .

Aquí está la captura de pantalla adjunta. ¡¡Salud!!

ingrese la descripción de la imagen aquí

tryKuldeepTanwar
fuente
Esto también funciona para Xcode versión 8. Después de activar "Mapas" en "Capacidades", indica que el marco MapKit.frame se vinculará. También puede confirmar esto yendo a "Fases de compilación" y expandiendo la sección "Enlace binario con bibliotecas". Debería ver el MapKit.framework allí también.
Ryan H.
9

Para xCode 4.2:

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

Noté que recibía este mensaje (además del original mencionado en esta publicación) cuando estaba compilando y ejecutando en el simulador:

ld: advertencia: ignorando el archivo /Users/peter/programming/iPhone/iNspector/MapKit.framework/MapKit, el archivo se creó para un formato de archivo no compatible que no es la arquitectura que se está vinculando (i386)

Luego, simplemente conecté mi iPhone, construí y ejecuté el dispositivo, y el mapa funcionó.

Parece que el marco MapKit no se puede compilar en la arquitectura 386, necesita el dispositivo.

conmocionado por el futuro
fuente
3

En lo que respecta a la entrada de @ futureshocked, también me encontré con el

Id: advertencia: ignorando el archivo /blah.../MapKit, el archivo se creó para un formato de archivo no compatible que no es la arquitectura que se está vinculando (i386)

problema.

** Compruebe para asegurarse de que no copió el MapKit marco en su directorio de proyecto local cuando lo agregó a su proyecto. Accidentalmente hice esto y XCode me estaba dando el error anterior. Así que lo eliminé del directorio de mi proyecto (en Finder), lo volví a compilar y todo volvió a la normalidad.

Si no tiene el Marco en su proyecto, continúe y vuelva a vincular como se indica en la respuesta anterior .

Encontré un buen tutorial sobre cómo comenzar a usar MapKit:
http://www.youtube.com/watch?v=X-3jM24EIGM&feature=related

ecurb33
fuente
3

También recibí este error al intentar implementar en mi teléfono 5.1 (con XC 4.5), incluso después de cambiar mi objetivo de implementación a 5.1. Parece que la actualización de mapas no funcionaría, ya que todavía tenía Google Maps en mi teléfono. Después de actualizar el sistema operativo de mi teléfono, la excepción desapareció.

RonTor
fuente
¿No debería ser suficiente simplemente eliminar los archivos con definiciones de mapas?
Konrad Viltersten
2

Importe el WebKit en sus fases de compilación. Necesita importar el WebKit

Naloiko Eugene
fuente
¿Qué WebKittiene que ver con MKMapView?
Alejandro Iván