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