使用userData作为字典

时间:2015-10-31 17:44:34

标签: swift xcode6 google-maps-sdk-ios

我需要我的标记来保存一些数据(不仅仅是位置,代码段和标题,它们已经在使用中)。我创建了一个字典,然后将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;
}

但是,我无法弄清楚如何单独访问每个值以将其显示给用户。问题似乎是userDataAnyObject而不是Dictionary(并且不能作为字典,字符串等向下转发)。

2 个答案:

答案 0 :(得分:1)

你可以做一个条件来获取一个字典,

if let dict = userData as? [string:Int] {
    //dict is now a Dictionary
} else {
    // something went wrong with the cast 
}

我在手机上,对不起这种格式。

答案 1 :(得分:0)

var dict = ["a": true, "b": false]

func f(userdata: AnyObject) {
    print(userdata)
    if let dict = userdata as? Dictionary<String,Bool> {
        print(dict)
    }
}

f(dict)

// print

{
    a = 1;
    b = 0;
}
["b": false, "a": true]