Dictionary 在Swift中嵌套在字典中的数组中追加值

Dictionary 在Swift中嵌套在字典中的数组中追加值,dictionary,syntax,swift,xcode6,Dictionary,Syntax,Swift,Xcode6,我对以下代码有一个奇怪的问题: var dict = ["KEY" : [1, 2]] println(dict["KEY"]) // Output is "Optional([1, 2])" println(dict["KEY"]!) // Output is "[1, 2]" dict["KEY"]!.append(3) // Error : '(String, Array<Int>)' does not have a member named 'append'

我对以下代码有一个奇怪的问题:

var dict = ["KEY" : [1, 2]]

println(dict["KEY"])    // Output is "Optional([1, 2])"
println(dict["KEY"]!)   // Output is "[1, 2]"

dict["KEY"]!.append(3)  // Error : '(String, Array<Int>)' does not have a member named 'append'
dict["KEY"]! += 3       // Error : type 'DictionaryIndex<String, Array<Int>>' does not conform to protocol 'StringLiteralConvertible'
var dict=[“KEY”:[1,2]]
println(dict[“KEY”])//输出是“可选的([1,2])”
println(dict[“KEY”!)//输出为“[1,2]”
dict[“KEY”]!。append(3)//错误:“(字符串,数组)”没有名为“append”的成员
dict[“KEY”]!+=3//错误:类型“DictionaryIndex”不符合协议“StringLiteralConvertible”
我的目标是将
dict
变量从
[“KEY”:[1,2]]
转换为
[“KEY”:[1,2,3]
。 我可能错过了一些东西,但我不知道是什么。

这样就可以了

import Cocoa
import Foundation

var dict = ["KEY" : [1, 2]]

println(dict["KEY"])    // Output is "Optional([1, 2])"
println(dict["KEY"]!)   // Output is "[1, 2]"

var array = dict["KEY"]!
array.append(3)
array += 3

dict["KEY"] = array

首先,来自苹果文档:

相反,如果将数组或字典赋给常数,则 数组或字典是不可变的,其大小和内容不能更改 变了

我认为,如果在字典中指定一个数组作为key的值,它的方式是相同的

此外,Swift集合在作为参数分配或传递时都会被复制

如果您真的想更改dict中的数组,我想您可以创建一个带有附加项的新数组,例如,并重新分配dict的值

var arrayInit = [1, 2]
var dict = ["KEY" : arrayInit]

//somewhere
var array = dict["KEY"]!
array.append(3)
dict["KEY"] = array;
println(dict["KEY"]!)   // Output is "[1, 2]"
如果我在代码末尾添加一个
println(dict)
,我们可以看到dict变量没有被修改(输出是
[KEY:[1,2]]