将 userData 作为字典使用
Working with userData as a Dictionary
我需要我的标记来保存一些数据(不仅仅是位置、片段和标题,它们已经在使用中)。我创建了一个字典,然后将 marker.userData
设置为该字典。但是,我在从这本字典中取回值时遇到问题。任何帮助将不胜感激。
var mapDict : [String : Bool] = [ "Accredited" : self.accredited,
"Accepts Infants" : self.acceptsInfants,
"Accepts Preschool" : self.acceptsPreschool,
"Accepts Schoolbag" : self.acceptsSchoolage,
self.slug.last! : false]
marker.userData = mapDict
当我再使用
func mapView(mapView: GMSMapView!, didTapMarker marker: GMSMarker!) -> Bool {
println(marker.userData)
}
我得到(这是正确的数据)
{
"Accepts Infants" = 0;
"Accepts Preschool" = 1;
"Accepts Schoolage" = 0;
Accredited = 0;
"little-steps" = 0;
}
但是,我不知道如何单独访问这些值中的每一个以将它们显示给用户。问题似乎是 userData
是一个 AnyObject
而不是 Dictionary
(并且不能被向下转换为字典、字符串等)。
你可以做一个条件来从中得到一本字典,
if let dict = userData as? [string:Int] {
//dict is now a Dictionary
} else {
// something went wrong with the cast
}
我在手机上,抱歉格式问题。
var dict = ["a": true, "b": false]
func f(userdata: AnyObject) {
print(userdata)
if let dict = userdata as? Dictionary<String,Bool> {
print(dict)
}
}
f(dict)
// 打印
{
a = 1;
b = 0;
}
["b": false, "a": true]
我需要我的标记来保存一些数据(不仅仅是位置、片段和标题,它们已经在使用中)。我创建了一个字典,然后将 marker.userData
设置为该字典。但是,我在从这本字典中取回值时遇到问题。任何帮助将不胜感激。
var mapDict : [String : Bool] = [ "Accredited" : self.accredited,
"Accepts Infants" : self.acceptsInfants,
"Accepts Preschool" : self.acceptsPreschool,
"Accepts Schoolbag" : self.acceptsSchoolage,
self.slug.last! : false]
marker.userData = mapDict
当我再使用
func mapView(mapView: GMSMapView!, didTapMarker marker: GMSMarker!) -> Bool {
println(marker.userData)
}
我得到(这是正确的数据)
{
"Accepts Infants" = 0;
"Accepts Preschool" = 1;
"Accepts Schoolage" = 0;
Accredited = 0;
"little-steps" = 0;
}
但是,我不知道如何单独访问这些值中的每一个以将它们显示给用户。问题似乎是 userData
是一个 AnyObject
而不是 Dictionary
(并且不能被向下转换为字典、字符串等)。
你可以做一个条件来从中得到一本字典,
if let dict = userData as? [string:Int] {
//dict is now a Dictionary
} else {
// something went wrong with the cast
}
我在手机上,抱歉格式问题。
var dict = ["a": true, "b": false]
func f(userdata: AnyObject) {
print(userdata)
if let dict = userdata as? Dictionary<String,Bool> {
print(dict)
}
}
f(dict)
// 打印
{
a = 1;
b = 0;
}
["b": false, "a": true]