MKMapViewという名前のクラスをインスタンス化できませんでした


165

私は以前にやったことがあり、それがうまくいったので、ここで本当に愚かなことをしているかもしれません...

新しいiPadプロジェクトを作成し、詳細ビューでMKMapViewを追加し、プロジェクトにMapKit.frameworkを追加し、ヘッダーにプロパティ/などを追加しました。プロジェクトを実行し、SIGABRTを取得します

****キャッチされなかった例外 'NSInvalidUnarchiveOperationException'によりアプリを終了しています、理由: 'MKMapViewという名前のクラスをインスタンス化できませんでした' **

http://mithin.in/2009/06/22/using-iphone-sdk-mapkit-framework-a-tutorial/を見つけましたが、言ったように、すでにフレームワークを追加しています。何が欠けていますか?

回答:


379

私もこれに遭遇しましたが、リンクのステップ2の指示に従うことでそれを乗り越えることができました(ちなみに、ありがとう):

  1. MapKitフレームワークをプロジェクトに追加します。(Control +クリックフレームワークフォルダ->追加->既存のフレームワーク)

MapKit.frameworkを検索してプロジェクトに追加したところ、エラーは解消しました。

(IBにMapViewDelegateが接続されていますが)マップコードはまだ追加していませんが、これまでのところ正常に機能しています。


それが役に立ててうれしい!私は最終的にそれが以下のようにして、働いて手に入れた: -クリーンプロジェクト-リセットデバイスを-必要があったことを確認リブートマシンをいないが、それが動作するようになりました:)
TG2

1
MapKitフレームワークの追加もうまくいきました。私のコードはマップを表示し、すべてがうまくいきました。
finneycanhelp

4
xcode 4.2でこの問題に遭遇した場合、フレームワークを追加した後、Frameworksフォルダーにフレームワークが表示されていても、エラーが発生しました。ターゲットをクリックし、次にビルドフェーズをクリックしたところ、[バイナリをライブラリにリンク]セクションにないことに気付きました。フレームワークフォルダからそのセクションにドラッグすると、問題が解決しました。ヒントをありがとう
Tim Stephenson

1
プロジェクトにリンクされていないビューを(Iterface Builderから)ドラッグしても警告が表示されないのは、ちょっと悲しいことです。
Paul Brewczynski、2014年

30

プロジェクトをクリックして、プロジェクト設定を表示します。[ターゲット]でプロジェクトをクリックし、上部のツールバーから[ビルドフェーズ]を選択します。[ライブラリとバイナリをリンク]タブに、プロジェクトに含まれているフレームワークのリストが表示されます。「+」ボタンをクリックし、表示されたリストからプロジェクトにMapKitライブラリを追加します。


27

Xcode 6.1の場合:

  • プロジェクトを選択してください
  • 一般タブで、リンクされたフレームワークとライブラリ(最後のもの)を探します
  • +ボタンを押す
  • MapKit.frameworkを検索
  • 最後に追加

17

簡単な方法!

Xcodeバージョン7.2以上で動作

私が懸念している限り、機能からMAPSを選択すると、フレームワークがプロジェクトに自動的にリンクされます。必要なのは、機能->マップの[マップ ]ボタンをチェックすることだけです。

添付のスクリーンショットはこちらです。乾杯!!

ここに画像の説明を入力してください


これはXcodeバージョン8でも機能します。[機能]で[マップ]をオンにすると、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に変更した後でも、(XC 4.5を使用して)5.1の電話に配置しようとすると、このエラーも発生しました。携帯電話にまだGoogleマップがあったので、マップの更新が飛ばないようです。スマートフォンのOSを更新した後、例外が消えました。


マップ定義を含むファイルを削除するだけで十分ではありませんか?
Konrad Viltersten、2012年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.