首页 > 解决方案 > 类型“位置”不符合协议“可解码”——MKAnnotation UIKit

问题描述

我是 Swift 编程的法国新手,我想用 UIKit 显示 JSON 文件中的注释(不是 swiftUI,因为我想对我的注释进行聚类)。我创建了一个可解码的类和一个 MKAnnotation,但我遇到了一个问题:“类型‘位置’不符合协议‘可解码’”

非常感谢您的回答!

这是我的位置类


class Location: NSObject, Decodable, Identifiable, MKAnnotation {
    
    var id: Int
    var name: String
    var latitude: Double
    var longitude : Double
    var coordinate:  CLLocationCoordinate2D
    
    
    init(id : Int, name : String, latitude : Double, longitude : Double){
        
        self.id = id
        self.name = name
        self.longitude = longitude
        self.latitude = latitude
    }
    
}

还有我的 JsonFile

{
  "locations": [
    {
      "id": 0,
      "name": "New York City",
      "latitude": 40.71,
      "longitude": -74
    },
    {
      "id": 1,
      "name": "Barcelona",
      "latitude": 41.38,
      "longitude": 2.17
    }

标签: swiftuikitmkannotation

解决方案


创建coordinate一个计算属性

var coordinate:  CLLocationCoordinate2D{
    CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
}

或者

var coordinate:  CLLocationCoordinate2D{
    get{
        CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
    }
    set{
        latitude = newValue.latitude
        longitude = newValue.longitude
    }
}

推荐阅读