我正在尝试使用字典来存储有关海港的信息,但是在字典中没有“ []”的情况下它可以工作,但是当我试图在内部存储更多信息并试图获取坐标和其他信息时,它就失败了我。
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"]
然后访问字典的Description部分,如下所示:
mk.subtitle = havner.description
错误:
不能将类型'[String:CLLocationCoordinate2D]'的值转换为预期的arg
无法将类型为[[String:CLLocationCoordinate2D]”的值分配为类型为“ CLLocationCoordinate2D”
答案 0 :(得分:0)
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