ไม่สามารถสร้างอินสแตนซ์ของคลาสชื่อ 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 ให้กับโครงการ (โฟลเดอร์ควบคุม + คลิกกรอบงาน -> เพิ่ม -> กรอบงานที่มีอยู่)

ฉันเพิ่งค้นหา MapKit.framework เพิ่มไปยังโครงการและข้อผิดพลาดหายไป

ฉันยังไม่ได้เพิ่มรหัสแผนที่ใด ๆ (แม้ว่าฉันจะมี MapViewDelegate ใน IB) แต่มันก็ใช้งานได้ดีจนถึงตอนนี้!


ดีใจที่มันช่วย! ผมไม่จนได้รับมันทำงานโดยการทำดังต่อไปนี้: - โครงการ Clean - อุปกรณ์ Reset - เครื่อง Reboot ไม่แน่ใจว่าเป็นสิ่งจำเป็น แต่การทำงานในขณะนี้ :)
TG2

1
การเพิ่มเฟรมเวิร์ก MapKit ก็ใช้ได้สำหรับฉันเช่นกัน รหัสของฉันนำขึ้นแผนที่และทุกอย่างทำงานได้ดี
finneycanhelp

4
หากใครก็ตามพบปัญหานี้ด้วย xcode 4.2 ฉันได้รับข้อผิดพลาดแม้ว่าเฟรมเวิร์กจะปรากฏในโฟลเดอร์ Frameworks หลังจากที่ฉันเพิ่มเข้าไป ฉันคลิกที่เป้าหมายจากนั้นไปที่ Build Phases และสังเกตว่ามันไม่ได้อยู่ในส่วนเชื่อมโยงไบนารีกับห้องสมุด การลากจากโฟลเดอร์เฟรมเวิร์กไปยังส่วนนั้นดูแลปัญหา ขอบคุณสำหรับคำใบ้
ทิมสตีเฟนสัน

1
มันเป็นเรื่องน่าเศร้าที่มันไม่ได้เตือนคุณเมื่อคุณลากมุมมอง (จากตัวสร้าง Iterface) ที่ไม่ได้เชื่อมโยงในโครงการของคุณ
Paul Brewczynski

30

คลิกที่โครงการของคุณเพื่อนำการตั้งค่าโครงการ ใต้เป้าหมายคลิกโครงการของคุณเลือกจากแถบเครื่องมือด้านบน "Build Phases" ภายใต้แท็บ "ลิงก์ไบนารีด้วยไลบรารี" คุณจะเห็นรายการกรอบงานที่รวมอยู่ในโครงการของคุณ คลิกปุ่ม "+" และเพิ่มไลบรารี MapKit จากรายการที่แสดงในโครงการของคุณ


27

สำหรับ Xcode 6.1:

  • เลือกโครงการของคุณ
  • ในแท็บทั่วไปมองหาLinked Frameworks และ Libraries (อันสุดท้าย)
  • กดปุ่ม +
  • ค้นหาMapKit.framework
  • ในที่สุดเพิ่ม

17

ทางที่ง่าย!

ทำงานได้เหนือ Xcode รุ่น 7.2

เท่าที่ฉันกังวลการเลือก MAPS จากความสามารถจะเชื่อมโยงกรอบงานของคุณกับโครงการของคุณโดยอัตโนมัติสิ่งที่คุณต้องทำคือทำเครื่องหมายที่ปุ่มแผนที่ใน ความสามารถ -> แผนที่แผนที่

นี่คือภาพหน้าจอที่แนบมา ไชโย !!

ป้อนคำอธิบายรูปภาพที่นี่


นอกจากนี้ยังใช้งานได้กับ Xcode เวอร์ชัน 8 หลังจากเปลี่ยน "แผนที่" ใน "ความสามารถ" ก็แสดงว่า MapKit.framework จะถูกเชื่อมโยง คุณสามารถยืนยันสิ่งนี้ได้โดยไปที่ "Build Phases" และขยายส่วน "Link Binary With Libraries" คุณควรเห็น 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 ฉันก็เจอ

รหัส: คำเตือน: การละเว้นไฟล์ /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 แผนที่บนโทรศัพท์ของฉัน หลังจากอัปเดตระบบปฏิบัติการในโทรศัพท์ของฉันแล้วข้อยกเว้นจะหายไป


มันจะไม่เพียงพอที่จะเพียงแค่ลบไฟล์ที่มีคำจำกัดความแผนที่?
Konrad Viltersten

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.