我不确定如何用快速的语言注释 map 。我不知道如何创建NSObject类。以下是我尝试但无法运行的代码:

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
    }
}

最佳答案

  • Swift中的所有初始化方法必须简单地是“init”
  • MKAnnotation要求对象从NSObjectProtocol继承。为此,您应该让您的类继承自NSObject
  • 您应该声明您的属性以与MKAnnotation协议(protocol)
  • 的属性匹配
  • 除非确实需要,否则不应将参数声明为“隐式解包的可选参数”。让编译器检查是否为零,而不是抛出运行时错误。

  • 这会给您结果:
    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
        }
    }
    

    关于ios - MKA注解Swift,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24233873/

    10-13 03:50