2014-07-17 18 views
5

Sử dụng MKMapRectMake để tạo MKMapRect gây biên dịch báo lỗi như sau:MKMapRectMake trong Swift gây lỗi mối liên kết khi biên dịch

Đây là mã của tôi:

var lat = 37.33072 
    var lon = -122.029674 
    var loc = CLLocationCoordinate2D(latitude: lat, longitude: lon) 
    var point = MKMapPointForCoordinate(loc) 

    var flyTo = MKMapRectMake(point.x, point.y, 0, 0); 

và đây là lỗi từ trình biên dịch:

Undefined symbols for architecture i386: 
    "_MKMapPointMake", referenced from: 
     _MKMapRectMake in ViewController.o 
    "_MKMapSizeMake", referenced from: 
     _MKMapRectMake in ViewController.o 
ld: symbol(s) not found for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Công việc của tôi cho việc này là tạo MKMapRect sử dụng thông số gốc và kích thước. Lưu ý rằng tôi đã thêm MKMapKit vào các thư viện được liên kết trong Build Phases

Có ai gặp phải vấn đề tương tự và cách bạn sửa lỗi này không?

+0

Đảm bảo thông số có cùng loại mà hàm chấp nhận. Chúng cần phải là giá trị 'Double'. – CainaSouza

+0

Dường như là một lỗi trong bản beta hiện tại. Bạn có thể thử cách giải quyết cầu Objective-C/Swift được hiển thị trong [this answer] (http://stackoverflow.com/questions/24128723/scnphysicsworld-error) như là một sửa chữa tạm thời. Về cơ bản, thực hiện các cuộc gọi MKMapRect trong Objective-C và gọi các phương thức bridge của bạn từ Swift. – Anna

+0

Cảm ơn. Đây có thể là một tùy chọn khác để thử. – tala9999

Trả lời

-2

var phối hợp: CLLocationCoordinate2D var boundingMapRect: MKMapRect

hai là tài sản cần thiết cho MKOverlay, hãy thêm chúng.

1

thay đổi này var flyTo = MKMapRectMake (point.x, point.y, 0, 0);

để

var flyTo = MKMapRect (xuất xứ: MKMapPointMake (x: point.x, y: point.y), kích thước MKMapSizeMake (width: 0, height: 0))

MKMapRect có nguồn gốc và kích thước tranh luận, mà bạn đang thiếu

MKMapRect (xuất xứ: MKMapPointMake (x :, y:), kích thước MKMapSizeMake (width:, chiều cao:))

7

làm việc xung quanh nó với một chức năng tiện ích:

func myMKMapRect(x: Double, y:Double, w:Double, h:Double) -> MKMapRect { 
    return MKMapRect(origin:MKMapPoint(x:x, y:y), size:MKMapSize(width:w, height:h)) 
} 

Và tất nhiên, hãy báo cáo lỗi với Apple.

Các vấn đề liên quan