Não foi possível instanciar a classe denominada MKMapView

165

Eu posso estar fazendo algo realmente estúpido aqui, como já fiz antes e funcionou e agora ...

Criado um novo projeto para iPad, na visualização de detalhes, adicionei um MKMapView, adicionei o MapKit.framework ao projeto, adicionei a propriedade / etc ao cabeçalho. Vá para executar o projeto e obtenha um SIGABRT com

**** Finalizando o aplicativo devido à exceção não capturada 'NSInvalidUnarchiveOperationException', motivo: 'Não foi possível instanciar a classe denominada MKMapView' **

Encontrei http://mithin.in/2009/06/22/using-iphone-sdk-mapkit-framework-a-tutorial/ mas, como eu disse, já adicionei framework. o que estou perdendo?

tg2
fonte

Respostas:

379

Também deparei com isso, mas consegui superar isso seguindo as instruções da etapa 2 do seu link (obrigado, a propósito):

  1. Adicione a estrutura do MapKit ao projeto. (Control + Clique na pasta Frameworks -> Add -> Existing Frameworks)

Eu apenas procurei pelo MapKit.framework, o adicionei ao projeto e o erro desapareceu.

Ainda não adicionei nenhum código de mapa (embora eu tenha um MapViewDelegate conectado no IB), mas até agora está funcionando bem!

JoBu1324
fonte
Fico feliz que ajudou! Finalmente consegui fazê-lo, fazendo o seguinte: - Projeto limpo - Reiniciar dispositivo - Reiniciar máquina Não tenho certeza do que era necessário, mas funciona agora :)
tg2
1
Adicionar a estrutura do MapKit também funcionou para mim. Meu código trouxe o mapa e tudo funcionou bem.
precisa saber é o seguinte
4
Se alguém tiver esse problema com o xcode 4.2, eu estava recebendo o erro, embora a estrutura estivesse aparecendo na pasta Frameworks após a adição. Cliquei no alvo, depois em Build Fhases, e notei que ele não estava na seção Link Binary with Library. Arrastá-lo da pasta frameworks para a seção em questão resolveu o problema. Obrigado pela dica,
Tim Stephenson
1
É meio triste que ele não avise quando você arrasta a exibição (do Iterface Builder) que não está vinculada ao seu projeto.
Paul Brewczynski
30

Clique no seu projeto para trazer as configurações do projeto. Em Destinos, clique no seu projeto, selecione na barra de ferramentas superior "Construir fases". Na guia "Vincular binário com bibliotecas", você verá a lista de estruturas incluídas no seu projeto. Clique no botão "+" e adicione a biblioteca MapKit da lista mostrada ao seu projeto.

Alice
fonte
27

Para o Xcode 6.1:

  • Selecione seu projeto
  • Na guia geral, procure Frameworks e Bibliotecas Vinculadas (última)
  • Pressione o botão +
  • Pesquisa MapKit.framework
  • Finalmente adicione
marc_aragones
fonte
17

Jeito fácil!

Funciona acima do Xcode versão 7.2

No que me diz respeito, selecionar o MAPS a partir dos recursos vinculará automaticamente sua estrutura ao seu projeto. Tudo o que você precisa fazer é verificar o botão Mapas em Recursos -> Mapas .

Aqui está a imagem em anexo. Felicidades!!

insira a descrição da imagem aqui

tryKuldeepTanwar
fonte
Isso também funciona para o Xcode versão 8. Depois de ativar "Mapas" em "Recursos", isso indica que o MapKit.framework será vinculado. Você também pode confirmar isso indo para "Criar fases" e expandindo a seção "Vincular binário com bibliotecas". Você deve ver o MapKit.framework lá também.
Ryan H.
9

Para o xCode 4.2:

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

Percebi que estava recebendo essa mensagem (em cima da original mencionada neste post) quando estava construindo e executando no simulador:

ld: aviso: ignorando o arquivo /Users/peter/programming/iPhone/iNspector/MapKit.framework/MapKit, o arquivo foi criado para o formato de arquivo não suportado, que não é a arquitetura que está sendo vinculada (i386)

Acabei de conectar meu iPhone, criar e executar no dispositivo, e o mapa funcionou.

Portanto, parece que a estrutura do MapKit não pode ser compilada na arquitetura 386, ela precisa do dispositivo.

futuro chocado
fonte
3

Em relação à entrada de @ futureshocked, eu também me deparei com o

Id: aviso: ignorando o arquivo /blah.../MapKit, o arquivo foi criado para um formato de arquivo não suportado, que não é a arquitetura que está sendo vinculada (i386)

questão.

** Verifique se você não copiou o MapKit estrutura no diretório do projeto local quando a adicionou ao seu projeto. Eu fiz isso acidentalmente e o XCode estava me dando o erro acima. Então eu o removi do diretório do projeto (no Finder), recompilei e tudo estava normal novamente.

Se você não possui o Framework em seu projeto, vá em frente e vincule novamente conforme indicado na resposta acima .

Encontrei um bom tutorial sobre como começar o MapKit:
http://www.youtube.com/watch?v=X-3jM24EIGM&feature=related

ecurb33
fonte
3

Também recebi esse erro ao tentar implantar no meu telefone 5.1 (com o XC 4.5), mesmo depois de alterar meu destino de implantação para 5.1. Parece que a atualização dos mapas não voaria, porque eu ainda tinha o Google Maps no meu telefone. Depois de atualizar o sistema operacional do meu telefone, a exceção desapareceu.

RonTor
fonte
Não deveria ser suficiente apenas remover os arquivos com definições de mapa?
21978 Konrad Viltersten
2

Importe o WebKit em suas fases de construção. Você precisa importar o WebKit

Naloiko Eugene
fonte
O que isso WebKittem a ver MKMapView?
Alejandro Iván