gpt4 book ai didi

ios - Swift Dictionary 为同一个键返回不同的对象

转载 作者:行者123 更新时间:2023-11-30 14:16:41 26 4
gpt4 key购买 nike

我正在将我的一个项目从 Obj-C 切换到 Swift,并且在从 NSDictionary/NSMutableArray 切换到 Dictionary/Array 时遇到了问题。因为我正在获取“key”的值,所以我假设它将返回它所指向的相同数组,就像在 Obj-C 中一样,但事实并非如此。我写了一个小样本来复制该错误。如果有正确方向的提示,我们将不胜感激。提前致谢

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]!
}

运行时它会注销[“第四”],我正在寻找的是[“第一”,“第二”,“第三”,“第四”]

最佳答案

这不是一个错误。

与 Objective-C 中的 NSArray 和 NSDictionary 是引用类型不同,Swift 中的 Array 和 Dictionary 是值类型

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

关于ios - Swift Dictionary 为同一个键返回不同的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31081325/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com