MKMapView라는 클래스를 인스턴스화 할 수 없습니다.


165

내가 전에 한 것처럼 여기에서 정말 어리석은 짓을하고있을 수 있습니다.

세부 사항보기에서 MKMapView를 추가하고 MapKit.framework를 프로젝트에 추가하고 / 등을 헤더에 추가 한 새 iPad 프로젝트를 작성했습니다. 프로젝트를 실행하고 SIGABRT를 얻으십시오.

**** 포착되지 않은 예외 'NSInvalidUnarchiveOperationException'으로 인해 앱을 종료하는 이유 : 'MKMapView라는 클래스를 인스턴스화 할 수 없습니다'**

http://mithin.in/2009/06/22/using-iphone-sdk-mapkit-framework-a-tutorial/을 찾았 지만 말했듯이 이미 프레임 워크를 추가했습니다. 내가 무엇을 놓치고 있습니까?

답변:


379

나도 이것에 부딪 쳤지 만, 당신의 링크에서 2 단계의 지시에 따라 그것을 지나갈 수있었습니다 (감사합니다).

  1. MapKit 프레임 워크를 프로젝트에 추가하십시오. (컨트롤 + 클릭 프레임 워크 폴더-> 추가-> 기존 프레임 워크)

방금 MapKit.framework를 검색하여 프로젝트에 추가했는데 오류가 사라졌습니다.

아직지도 코드를 추가하지 않았지만 (IB에 MapViewDelegate가 연결되어 있지만) 지금까지는 제대로 작동합니다!


도움이되어 다행입니다! 시스템 재부팅이 확실하지 필요한이었다, 그러나 :) 지금 작동 - 리셋 장치 - 클린 프로젝트 - : 나는 마침내 다음을 수행하여 작업을 얻을 않았다
— TG2

1
MapKit 프레임 워크를 추가하면 나에게 도움이되었습니다. 내 코드는지도를 가져 왔고 모든 것이 잘 작동했습니다.
— finneycanhelp

4
xcode 4.2 에서이 문제가 발생하면 Frameworks 폴더를 추가 한 후 Frameworks 폴더에 표시되었지만 오류가 발생했습니다. 대상을 클릭 한 다음 빌드 단계를 클릭 한 후 라이브러리와 바이너리 링크 섹션에없는 것으로 나타났습니다. frameworks 폴더에서 해당 섹션으로 드래그하면 문제가 해결되었습니다. 힌트 주셔서 감사합니다
— Tim Stephenson

1
Iterface Builder에서 프로젝트에 링크되지 않은 뷰를 끌 때 경고하지 않는 것은 슬픈 일입니다.
— Paul Brewczynski

30

프로젝트를 클릭하여 프로젝트 설정을 가져 오십시오. 대상 아래에서 프로젝트를 클릭하고 상단 도구 모음 "빌드 단계"에서 선택하십시오. "라이브러리와 바이너리 연결"탭 아래에 프로젝트에 포함 된 프레임 워크 목록이 표시됩니다. "+"버튼을 클릭하고 표시된 목록에서 MapKit 라이브러리를 프로젝트에 추가하십시오.


27

Xcode 6.1의 경우 :

  • 프로젝트를 선택하십시오
  • 일반 탭에서 연결된 프레임 워크 및 라이브러리를 찾으십시오. (마지막)를
  • + 버튼을 누릅니다
  • MapKit.framework 검색
  • 마지막으로 추가

17

쉬운 방법!

Xcode 버전 7.2 이상에서 작동

기능에서 MAPS를 선택하는 것과 관련하여 프레임 워크를 프로젝트에 자동으로 연결하면 Capabilities-> Maps 에서 Maps 버튼을 확인하기 만하면됩니다. .

첨부 된 스크린 샷입니다. 건배!!

여기에 이미지 설명을 입력하십시오


이것은 또한 Xcode 버전 8에서도 작동합니다. "Capabilities"에서 "Maps"를 켜면 MapKit.framework가 연결됨을 나타냅니다. "빌드 단계"로 이동하여 "바이너리와 바이너리 링크"섹션을 확장하여이를 확인할 수도 있습니다. MapKit.framework도보아야합니다.
— Ryan H.

9

xCode 4.2의 경우 :

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

3

시뮬레이터에서 빌드하고 실행할 때이 메시지 (이 게시물에 언급 된 원본 위에)가 표시되는 것을 알았습니다.

ld : 경고 : /Users/peter/programming/iPhone/iNspector/MapKit.framework/MapKit 파일을 무시하고 파일이 지원되지 않는 파일 형식으로 작성되었으며 링크 된 아키텍처가 아닙니다 (i386)

그런 다음 방금 iPhone을 연결하고 장치를 빌드하고 실행했는데지도가 작동했습니다.

따라서 MapKit 프레임 워크는 386 아키텍처에서 컴파일 할 수 없으며 장치가 필요합니다.


3

@futureshocked의 입력과 관련하여, 나는 또한

ID : 경고 : 파일 /blah.../MapKit을 무시하고 파일이 지원되지 않는 파일 형식으로 작성되었으며 링크 된 아키텍처가 아닙니다 (i386)

발행물.

** 복사하지 않았는지 확인하십시오 MapKit 프레임 워크를 프로젝트에 추가 할 때 로컬 프로젝트 디렉토리에 프레임 워크를 . 실수 로이 작업을 수행했으며 XCode에서 위의 오류가 발생했습니다. 그래서 나는 그것을 Finder의 프로젝트 디렉토리에서 제거하고 다시 컴파일했으며 모든 것이 다시 정상적이었습니다.

프로젝트에 프레임 워크가 없으면 위 의 답변에 설명 된대로 다시 연결하십시오 .

MapKit 시작에 대한 유용한 자습서를 찾았습니다.
http://www.youtube.com/watch?v=X-3jM24EIGM&feature=related


3

또한 배포 대상을 5.1로 변경 한 후에도 5.1 전화 (XC 4.5 포함)에 배포하려고 할 때이 오류가 발생했습니다. 휴대 전화에 여전히 Google지도가있어지도 업데이트가 표시되지 않는 것 같습니다. 휴대 전화의 OS를 업데이트 한 후 예외가 사라졌습니다.


맵 정의가있는 파일 만 제거하면 충분하지 않습니까?
— Konrad Viltersten

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.