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