Tidak dapat membuat instance kelas bernama MKMapView

165

Saya mungkin melakukan sesuatu yang sangat bodoh di sini karena saya pernah melakukannya sebelumnya dan itu berhasil dan sekarang ...

Membuat proyek iPad baru, pada tampilan detail saya menambahkan MKMapView, menambahkan MapKit.framework ke proyek, menambahkan properti / dll ke header. Pergi untuk menjalankan proyek dan mendapatkan SIGABRT dengan

**** Mengakhiri aplikasi karena pengecualian yang tidak tertangkap 'NSInvalidUnarchiveOperationException', alasan: 'Tidak dapat membuat instance kelas bernama MKMapView' **

Saya menemukan http://mithin.in/2009/06/22/using-iphone-sdk-mapkit-framework-a-tutorial/ tetapi, seperti yang saya katakan, saya sudah menambahkan kerangka kerja. Apa yang saya lewatkan?

tg2
sumber

Jawaban:

379

Saya juga mengalami hal ini, tetapi saya bisa melewatinya dengan mengikuti instruksi langkah 2 di tautan Anda (terima kasih, omong-omong):

  1. Tambahkan kerangka kerja MapKit ke proyek. (Kontrol + folder Kerangka Klik -> Tambah -> Kerangka yang Ada)

Saya baru saja mencari MapKit.framework, menambahkannya ke proyek, dan kesalahan hilang.

Saya belum menambahkan kode peta apa pun (walaupun saya memiliki MapViewDelegate yang terhubung di IB), tetapi sejauh ini berfungsi dengan baik!

JoBu1324
sumber
Senang itu membantu! Saya akhirnya membuatnya bekerja dengan melakukan hal berikut: - Proyek bersih - Reset perangkat - Mesin reboot Tidak yakin mana yang diperlukan, tetapi bekerja sekarang :)
tg2
1
Menambahkan kerangka MapKit juga berhasil bagi saya. Kode saya membuka peta dan semuanya bekerja dengan baik.
finneycanhelp
4
Jika ada yang mengalami masalah ini dengan xcode 4.2, saya mendapatkan kesalahan meskipun kerangka muncul di folder Frameworks setelah saya menambahkannya. Saya mengklik target, lalu pada Build Phases, dan memperhatikan bahwa itu tidak ada di bagian Binary Link dengan Library. Menyeretnya dari folder frameworks ke bagian itu menangani masalah. Terima kasih atas petunjuknya,
Tim Stephenson
1
Sangat menyedihkan, bahwa itu tidak memperingatkan Anda ketika Anda menyeret (dari Iterface Builder) tampilan yang tidak ditautkan dalam proyek Anda.
Paul Brewczynski
30

Klik pada proyek Anda untuk membawa pengaturan proyek. Di bawah Target, klik proyek Anda, pilih dari bilah alat atas "Bangun Fase". Di bawah tab "Tautan biner Dengan Perpustakaan", Anda akan melihat daftar kerangka kerja yang termasuk dalam proyek Anda. Klik tombol "+" dan tambahkan perpustakaan MapKit dari daftar yang ditampilkan ke proyek Anda.

Alice
sumber
27

Untuk Xcode 6.1:

  • Pilih proyek Anda
  • Pada tab umum, cari Framework dan Perpustakaan Tertaut (yang terakhir)
  • Tekan tombol +
  • Cari MapKit.framework
  • Akhirnya tambahkan
marc_aragones
sumber
17

Jalan mudah!

Berfungsi di atas Xcode versi 7.2

Sejauh yang saya khawatir memilih MAPS dari kemampuan akan secara otomatis menghubungkan kerangka kerja Anda ke proyek Anda yang harus Anda lakukan adalah memeriksa tombol Peta di Kemampuan -> Peta .

Inilah screenshot yang terlampir. Bersulang!!

masukkan deskripsi gambar di sini

tryKuldeepTanwar
sumber
Ini juga berfungsi untuk Xcode versi 8. Setelah beralih "Maps" di bawah "Capabilities", ini menunjukkan bahwa MapKit.framework akan ditautkan. Anda juga dapat mengonfirmasi ini dengan masuk ke "Bangun Fase" dan memperluas bagian "Tautan Biner Dengan Perpustakaan". Anda harus melihat MapKit.framework di sana juga.
Ryan H.
9

Untuk xCode 4.2:

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

Saya perhatikan bahwa saya mendapatkan pesan ini (di atas yang asli yang disebutkan dalam posting ini) ketika saya sedang membangun dan menjalankan simulator:

ld: peringatan: mengabaikan file / Pengguna / parameter / pemrograman / iPhone/iNspector/MapKit.framework/MapKit, file dibangun untuk format file yang tidak didukung yang bukan arsitektur yang ditautkan (i386)

Lalu saya hanya menghubungkan iPhone saya, membangun dan berlari di perangkat, dan peta berfungsi.

Jadi sepertinya kerangka MapKit tidak dapat dikompilasi pada arsitektur 386, ia membutuhkan perangkat.

terkunci di masa depan
sumber
3

Berkenaan dengan input @ futureshocked, saya juga menemukan

Id: warning: ignoring file /blah.../MapKit, file dibuat untuk format file yang tidak didukung yang bukan arsitektur yang ditautkan (i386)

isu.

** Periksa untuk memastikan Anda tidak menyalin MapKitkerangka kerja ke direktori proyek lokal Anda ketika Anda menambahkannya ke proyek Anda. Saya tidak sengaja melakukan ini dan XCode memberi saya kesalahan di atas. Jadi saya menghapusnya dari direktori proyek saya (di Finder), dikompilasi ulang, dan semuanya normal kembali.

Jika Anda tidak memiliki Kerangka dalam proyek Anda, silakan dan tautkan kembali seperti yang dinyatakan dalam jawaban di atas .

Menemukan tutorial yang bagus untuk memulai dengan MapKit:
http://www.youtube.com/watch?v=X-3jM24EIGM&feature=related

ecurb33
sumber
3

Saya juga menerima kesalahan ini ketika mencoba menggunakan ke ponsel 5.1 saya (dengan XC 4.5), bahkan setelah mengubah target penempatan saya menjadi 5.1. Sepertinya pembaruan peta tidak akan terbang karena saya masih memiliki Google Maps di ponsel saya. Setelah memperbarui OS ponsel saya, pengecualian menghilang.

RonTor
sumber
Bukankah seharusnya cukup dengan hanya menghapus file dengan definisi peta?
Konrad Viltersten
2

Silakan impor WebKit di Fase Bangun Anda. Anda perlu mengimpor WebKit

Naloiko Eugene
sumber
Apa yang WebKitharus dilakukan dengan MKMapView?
Alejandro Iván