Không thể khởi tạo lớp có tên MKMapView


165

Tôi có thể đang làm điều gì đó thực sự ngu ngốc ở đây vì tôi đã làm nó trước đây và nó đã hoạt động và bây giờ ...

Tạo một dự án iPad mới, trong chế độ xem chi tiết, tôi đã thêm MKMapView, thêm MapKit.framework vào dự án, thêm thuộc tính / vv vào tiêu đề. Đi để chạy dự án và nhận SIGABRT với

**** Chấm dứt ứng dụng do ngoại lệ chưa được phát hiện 'NSInvalidUnarchiveOperationException', lý do: 'Không thể khởi tạo lớp có tên MKMapView' **

Tôi đã tìm thấy http://mithin.in/2009/06/22/USE-iphone-sdk-mapkit-framework-a-tutorial/ nhưng, như tôi đã nói, tôi đã thêm khung. Tôi đang thiếu gì?

Câu trả lời:


379

Tôi cũng gặp phải vấn đề này, nhưng tôi đã có thể vượt qua nó bằng cách làm theo các hướng dẫn của bước 2 trong liên kết của bạn (cảm ơn, nhân tiện):

  1. Thêm khung MapKit cho dự án. (Kiểm soát + Nhấp vào thư mục Khung -> Thêm -> Khung hiện có)

Tôi vừa tìm kiếm MapKit.framework, thêm nó vào dự án và lỗi đã biến mất.

Tôi chưa thêm bất kỳ mã bản đồ nào (mặc dù tôi có MapViewDelegate được kết nối trong IB), nhưng cho đến nay nó vẫn hoạt động tốt!


Vui vì nó đã giúp! Cuối cùng tôi đã làm cho nó hoạt động bằng cách làm như sau: - Dự án sạch - Đặt lại thiết bị - Khởi động lại máy Không chắc chắn là cần thiết, nhưng nó hoạt động ngay bây giờ :)
tg2

1
Thêm khung MapKit cũng làm việc cho tôi. Mã của tôi đưa lên bản đồ và mọi thứ hoạt động tốt.
finneycanhelp

4
Nếu bất cứ ai gặp phải vấn đề này với xcode 4.2, tôi đã gặp lỗi ngay cả khi khung xuất hiện trong thư mục Khung sau khi tôi thêm nó. Tôi đã nhấp vào mục tiêu, sau đó vào Giai đoạn xây dựng và nhận thấy rằng nó không nằm trong phần Liên kết nhị phân với Thư viện. Kéo nó từ thư mục khung vào phần đó đã giải quyết vấn đề. Cảm ơn vì gợi ý,
Tim Stephenson

1
Thật đáng buồn, nó không cảnh báo bạn khi bạn kéo (từ Iterface Builder) không được liên kết trong dự án của bạn.
Paul Brewczynski

30

Bấm vào dự án của bạn để mang lại các thiết lập dự án. Trong mục tiêu, nhấp vào dự án của bạn, chọn từ thanh công cụ phía trên "Xây dựng giai đoạn". Trong tab "Liên kết nhị phân với thư viện", bạn sẽ thấy danh sách các khung có trong dự án của bạn. Nhấp vào nút "+" và thêm thư viện MapKit từ danh sách được hiển thị vào dự án của bạn.


27

Đối với Xcode 6.1:

  • Chọn dự án của bạn
  • Trong tab chung, hãy tìm Thư viện và Khung liên kết (cái cuối cùng)
  • Nhấn nút +
  • Tìm kiếm MapKit.framework
  • Cuối cùng thêm

17

Cách dễ dàng!

Hoạt động trên Xcode phiên bản 7.2

Theo như tôi quan tâm, việc chọn MAPS từ các khả năng sẽ tự động liên kết khung của bạn với dự án của bạn, tất cả những gì bạn phải làm là kiểm tra nút Bản đồ trong Khả năng -> Bản đồ .

Đây là ảnh chụp màn hình đính kèm. Chúc mừng !!

nhập mô tả hình ảnh ở đây


Điều này cũng hoạt động cho Xcode phiên bản 8. Sau khi bật "Bản đồ" trong "Khả năng", nó chỉ ra rằng MapKit.framework sẽ được liên kết. Bạn cũng có thể xác nhận điều này bằng cách vào "Xây dựng giai đoạn" và mở rộng phần "Liên kết nhị phân với thư viện". Bạn cũng sẽ thấy MapKit.framework ở đó.
Ryan H.

9

Đối với xCode 4.2:

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

3

Tôi nhận thấy rằng tôi đã nhận được thông báo này (trên đầu trang gốc được đề cập trong bài đăng này) khi tôi đang xây dựng và chạy trên trình giả lập:

ld: warning: bỏ qua tệp /Users/peter/programming/iPhone/iNspector/MapKit.framework/MapKit, tệp được xây dựng cho định dạng tệp không được hỗ trợ không phải là kiến ​​trúc được liên kết (i386)

Sau đó, tôi chỉ cần kết nối iPhone của mình, xây dựng và chạy trên thiết bị và bản đồ đã hoạt động.

Vì vậy, có vẻ như khung MapKit không thể được biên dịch trên kiến ​​trúc 386, nó cần thiết bị.


3

Liên quan đến đầu vào của @ futureshocked, tôi cũng đã xem qua

Id: cảnh báo: bỏ qua tệp /blah.../MapKit, tệp được tạo cho định dạng tệp không được hỗ trợ mà không phải là kiến ​​trúc được liên kết (i386)

vấn đề.

** Kiểm tra để đảm bảo bạn không sao chép MapKit khung vào thư mục dự án cục bộ của bạn khi bạn thêm nó vào dự án của mình. Tôi đã vô tình làm điều này và XCode đã cho tôi lỗi ở trên. Vì vậy, tôi đã xóa nó khỏi thư mục dự án của tôi (trong Finder), biên dịch lại và mọi thứ lại bình thường.

Nếu bạn không có Framework trong dự án của mình, hãy tiếp tục và liên kết lại như đã nêu trong câu trả lời ở trên .

Tìm thấy một hướng dẫn tốt về việc bắt đầu với MapKit:
http://www.youtube.com/watch?v=X-3jM24EIGM&feature=related


3

Tôi cũng đã nhận được lỗi này khi cố gắng triển khai vào điện thoại 5.1 của mình (với XC 4.5), ngay cả sau khi thay đổi mục tiêu triển khai thành 5.1. Có vẻ như bản cập nhật bản đồ sẽ không bay được vì tôi vẫn có Google Maps trên điện thoại. Sau khi cập nhật hệ điều hành điện thoại của tôi, ngoại lệ biến mất.


Không nên chỉ cần loại bỏ các tệp có định nghĩa bản đồ?
Konrad Viltersten

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.