【问题标题】:MKAnnotation SwiftMKAnnotation Swift
【发布时间】:2014-06-15 20:34:18
【问题描述】:

我不确定如何用 swift 语言注释地图。我不知道如何创建 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
    }
}

【问题讨论】:

  • 您必须告诉我们您无法运行它的原因。你遇到了什么样的错误?您打算如何使用它?

标签: ios iphone swift


【解决方案1】:
  1. Swift 中的所有初始化方法都必须是“init”
  2. MKAnnotation 要求对象继承自 NSObjectProtocol。为此,您应该让您的类继承自 NSObject
  3. 您应该声明您的属性以匹配 MKAnnotation 协议的属性
  4. 除非您确实必须这样做,否则您不应将参数声明为隐式解包选项。让编译器检查某些内容是否为 nil,而不是抛出运行时错误。

这会给你结果:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    相关资源
    最近更新 更多