从Swift中的字典中获取值时崩溃

时间:2014-12-17 14:15:09

标签: ios swift dictionary nsdictionary nsmutabledictionary

我创建了一个像

这样的词典
var tempArray1 = ["sdds","dsads"]
var tempArray2: AnyObject = ["sddsa",34,tempArray1]
var dictionary: [String:Array] = ["key1":["value1"],"key2":["value2",6,tempArray2]]

当我尝试打印字典中的所有值时,应用程序崩溃了,如

let allValues = [Array](dictionary.values)
for value in allValues{
     println(value)
}

我刚开始用快速语言学习字典概念。我想知道我的做法是对还是错。 请帮我解决一下

2 个答案:

答案 0 :(得分:2)

由于Swift数组已关联,我不认为您可以使用数组声明类型而不指定其关联类型。我不确定为什么你没有得到编译时错误。这应该有效:

var tempArray1 = ["sdds","dsads"]
var tempArray2: AnyObject = ["sddsa",34,tempArray1]
var dictionary: [String:Array<AnyObject>] = ["key1":["value1"],"key2":["value2",6,tempArray2]]

let allValues = [Array<AnyObject>](dictionary.values)
for value in allValues{
    println(value)
}

甚至更短:

var tempArray1 = ["sdds","dsads"]
var tempArray2: AnyObject = ["sddsa",34,tempArray1]
var dictionary: [String:[AnyObject]] = ["key1":["value1"],"key2":["value2",6,tempArray2]]

let allValues = dictionary.values
for value in allValues{
    println(value)
}

答案 1 :(得分:2)

你也可以尝试这个

var tempArray1 = ["sdds","dsads"]  
var tempArray2: AnyObject = ["sddsa",34,tempArray1]

println("Array inside array \(tempArray2)")
    var dictionary: [String:Array] = ["key1":["value1"],"key2":["value2",6,tempArray2]]

    println(dictionary)

    let allValues = Array(dictionary.values)
    for value in allValues{
        println(value)
    }