我正在尝试将整行附加到数据上。完整的示例实际上是二维数组的字典:
1> var a: [String:[[Double]]] = [:]
a: [String : [[Double]]] = 0 key/value pairs
2> a["a"] = []
3> a["a"].append([0.1, 0.2])
error: repl.swift:3:2: error: value of type '[[Double]]?' has no member 'append'
a["a"].append([0.1, 0.2])
~^~~~~ ~~~~~~
我如何获得["a":[[0.1, 0.2], [0.2, 0.3]]]
鉴于我不会事先知道键“ a”是什么,也不知道行数或它们的值,直到以后执行各个不同的点?
答案 0 :(得分:1)
出现错误的原因是您尝试附加到可选内容。将其更改为a[“a”]?.append([0.1, 0.2])
要获得预期的输出结果
var a: [String: [[Double]]] = [:]
a["a"] = []
a["a"]?.append([0.1, 0.2])
a["a"]?.append([0.2, 0.3])
另一种方法
var a: [String: [[Double]]] = [:]
a["a"] = [[0.1, 0.2], [0.2, 0.3]]
答案 1 :(得分:1)
由于a["a"]
返回一个可选内容(因为字典中可能没有键"a"
),因此您需要使用a["a"]?.append([0.1, 0.2])
。
另一种选择是提供默认值:
a["a", default: []].append([0.1, 0.2])
这甚至消除了对a["a"] = []
行的需要。