Ios Swift Dictionary正在为同一密钥返回不同的对象

Ios Swift Dictionary正在为同一密钥返回不同的对象,ios,arrays,swift,dictionary,Ios,Arrays,Swift,Dictionary,我正在将我的一个项目从Obj-C切换到Swift,在从NSDictionary/NSMutableArray切换到Dictionary/Array时遇到了一个问题。因为我获取的是“key”的值,所以我假设它将返回它在Obj-C中指向的相同数组,但事实并非如此。我编写了一个复制bug的小样本。如果你能给我一个正确的建议,我将不胜感激。提前谢谢 var test:[ [String:[String]] ] init() { test = [ [String:[String]] ]() var

我正在将我的一个项目从Obj-C切换到Swift,在从NSDictionary/NSMutableArray切换到Dictionary/Array时遇到了一个问题。因为我获取的是“key”的值,所以我假设它将返回它在Obj-C中指向的相同数组,但事实并非如此。我编写了一个复制bug的小样本。如果你能给我一个正确的建议,我将不胜感激。提前谢谢

var test:[ [String:[String]] ]

init() {

test = [ [String:[String]] ]()

var first:[String] = _arrayForKey("key")
first.append("first")

var second:[String] = _arrayForKey("key")
second.append("second")

var third:[String] = _arrayForKey("key")
third.append("third")

var fourth:[String] = _arrayForKey("key")
fourth.append("fourth")

println(work)
}

private func _arrayForKey(key:String) -> [String] {

for dict in test {
    if dict.keys.first! == key {
        return dict[key]!
    }
}

test.append([key:[String]()])
var dict:[String:[String]] = test.last!

println("MAKING A NEW DICTIONARY \(test)")
return dict[key]!
}
当它注销[“第四”]时,我要寻找的是[“第一”、“第二”、“第三”、“第四”]

它不是一个bug

例如,与Objective-C中NSArray和NSDictionary是引用类型不同,Swift中的数组和字典是值类型

var array1 = [1, 2, 3]
var array2 = array1 // array is copied
array1[2] = 4
println(array1) // -> [1, 2, 4]
println(array2) // -> [1, 2, 3]