swift - 类型“位置”不符合协议“可解码”——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
}
解决方案
创建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
}
}
推荐阅读
- c# - 如何在 C# 中处理 POST 请求
- powershell - 如何让我的所有 powershell 脚本在没有权限问题的情况下运行?
- python - Python/Django 用户详细信息视图
- java - 如何在 ObjectMapper 上为 Jackson 添加 Jdk8Module
- objective-c - 在 Cocoa 中,NSDateFormatter 提供了一个 dateFromString: 方法,用于将字符串解析为日期对象。NSByteCountFormatter 有什么类似的吗?
- java - 如何使用 Netbeans 11 正确创建资源目录
- javascript - 在移动设备上预览网页
- ios - RxSwift——MainScheduler.instance 与 MainScheduler.asyncInstance
- python - Astropy,将 Heliocenric 笛卡尔坐标转换为 RA/Dec 的问题
- java - 图片不能在GridView中显示?