swift - 访问字典中的字典并将其分配给变量

标签 swift xcode dictionary mapkit latitude-longitude

我正在尝试使用字典来存储有关港口的信息,它在字典中没有“[]”的情况下工作,但是当我试图在内部存储更多信息并尝试获取坐标和其他信息时,它失败了我。

let dict = [
        "Holmsbu": ["cord":CLLocationCoordinate2DMake(59.5, 10.4)],
        "Kragerø": ["cord":CLLocationCoordinate2DMake(59.1, 10.4)],
        "Risør": ["cord":CLLocationCoordinate2DMake(59.2, 10.4)],
        "Strömstad": ["cord":CLLocationCoordinate2DMake(59.3, 10.4)]]
    
    for havner in dict {
        map.setRegion(MKCoordinateRegionMake(havner.value, MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1)), animated: true)
        let mk = MKPointAnnotation()
        mk.coordinate = havner.value
        mk.title = havner.key
        map.addAnnotation(mk)
        }
    }

我正在尝试这样做

 let dict = ["Holmsbu": ["cord":CLLocationCoordinate2DMake(59.5, 10.4), "power": "yes", "description":"DESCRIPTION HERE"]

然后像这样访问字典的描述部分:

mk.subtitle = havner.description

错误:

Cannot convert value of type '[String : CLLocationCoordinate2D]' to expected arg

Cannot assign value of type '[String : CLLocationCoordinate2D]' to type 'CLLocationCoordinate2D'

最佳答案

value[String : CLLocationCoordinate2D]

类型的字典

您必须获取键 cord 的值,只有当有更多键值对时才需要类型转换。

for havner in dict {
    map.setRegion(MKCoordinateRegionMake(havner.value, MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1)), animated: true)
    let mk = MKPointAnnotation()
    mk.coordinate = havner.value["cord"]! // as! CLLocationCoordinate2D
    mk.title = havner.key
    map.addAnnotation(mk)
    }
}

mk.subtitle = havner.value["description"] as! String

我建议使用结构

struct Havner {
    let name : String
    let coordinate : CLLocationCoordinate2D
    let description : String
}

和一个 Havner 数组,然后你可以使用点语法,如 havner.description

关于swift - 访问字典中的字典并将其分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51677034/

相关文章:

python - 使用多个字典复制字典键

dictionary - lua 5.2 改变表格中元素的顺序

iOS Swift 和计时器

swift - 如何在控制台中 “draw” 二叉树?

Swift – "No such module ' Stripe3DS 2'"更新 Stripe 到 21.0.1 后

XCode 4.3 通过输入自动在 TextView 中从剪贴板文本

java - 为什么按原样实现调整大小?

ios - 当我尝试快速使用外部数据库和 API 时如何修复此错误

uitableview - 如何从 UITableViewCell Controller 内部实例化ViewControllerWithIdentifier

swift - 调用中的无关参数标签 'with:'