2014-06-15 19 views
33

Tôi không chắc chắn cách chú giải bản đồ bằng ngôn ngữ nhanh. Tôi không biết cách tạo lớp NSObject. Sau đây là đoạn code tôi đã cố gắng nhưng không thể chạy:MKAnnotation Swift

import Foundation 
import MapKit 
class MapPin : MKAnnotation 
{ 
    var mycoordinate: CLLocationCoordinate2D 
    var mytitle: String 
    var mysubtitle: String 

    func initMapPin (coordinate: CLLocationCoordinate2D!, title: String!, subtitle: String!) 
    { 
     mycoordinate = coordinate 
     mytitle = title 
     mysubtitle = subtitle 
    } 
} 
+0

Bạn cần phải cung cấp cho chúng tôi một số ý tưởng về lý do tại sao bạn không thể chạy nó. Bạn gặp phải loại lỗi nào? Bạn đang cố gắng sử dụng điều này như thế nào? –

Trả lời

86
  1. Tất cả các phương pháp khởi tạo trong Swift phải chỉ đơn giản là "init"
  2. MKAnnotation yêu cầu các đối tượng kế thừa từ NSObjectProtocol. Để làm điều đó, bạn nên để lớp của bạn được kế thừa từ NSObject
  3. Bạn nên khai báo thuộc tính của mình để khớp với giao thức MKAnnotation
  4. Bạn không nên khai báo tham số của mình dưới dạng Tùy chọn ẩn hoàn toàn trừ khi bạn thực sự phải thực hiện. Hãy để trình biên dịch kiểm tra nếu một cái gì đó là nil thay vì ném các lỗi thời gian chạy.

này mang đến cho bạn kết quả:

class MapPin : NSObject, MKAnnotation { 
    var coordinate: CLLocationCoordinate2D 
    var title: String? 
    var subtitle: String? 

    init(coordinate: CLLocationCoordinate2D, title: String, subtitle: String) { 
     self.coordinate = coordinate 
     self.title = title 
     self.subtitle = subtitle 
    } 
} 
+0

Cảm ơn rất nhiều :) –

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