String不能从Dictionary <string,anyobject> Swift </string,anyobject>中转换

时间:2014-07-30 00:19:29

标签: swift

我一直在争夺这个问题太久了。我不知道

var a : [[String:AnyObject]] = [
    [
        "this":12
    ]
]

var b = "this"

func findAllKV(array: [[String:AnyObject]], key: String, value: AnyObject) -> [[String:AnyObject]] {
    var all : [[String:AnyObject]] = []
    for dict in array {
        if dict[key] == value {
            all.append(dict)
        }
    }
    return all
}


findAllKV(a, b, 12)

我只是想创建一个搜索字典数组并找到所有匹配键值的函数

2 个答案:

答案 0 :(得分:2)

试试这个 - println()有助于揭示问题:

var a : [[String:AnyObject]] = [
    [
        "this":12,
        "test":13
    ],
    [
        "me":15,
        "you":16
    ]
]

var b = "you"

func findAllKV(array: [[String:AnyObject]], key: String, value: AnyObject) -> [[String:AnyObject]] {
    var all : [[String:AnyObject]] = []
    for dict in array {

        println(dict)
        println(dict[key])

        if let value: AnyObject = dict[key] {
            println(value)
            all += dict
        }
    }
    return all
}


findAllKV(a, b, 12)

答案 1 :(得分:1)

dict [key]返回一个可选值。在检查之前尝试解开它:

var a : [[String:AnyObject]] = [
    [
        "this":12
    ]
]

var b = "this"

func findAllKV(array: [[String:AnyObject]], key: String, value: AnyObject) -> [[String:AnyObject]] {
    var all : [[String:AnyObject]] = []
    for dict in array {
        if let val: AnyObject = dict[key] {
            if val === value {
                all.append(dict)
            }
        }
    }
    return all
}


var x = findAllKV(a, b, 12)
println(x) //[[this : 12 ]]