将 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]