[英]Swift Issue - Dictionary with Two-dimensional Array in Array list
我试图弄清楚我的代码有什么问题,因为XCode不接受运行此代码。 知道这有什么问题吗?
var dictionary = [String: [[String]]]()
var array = [[AnyObject]]()
dictionary["1"] = [["A", "A"], ["A1", "A2"]]
dictionary["2"] = [["B", "B"], ["B1", "B2"]]
dictionary["3"] = [["C", "C"], ["C1", "C2"]]
for i in 1...3 {
array.appendContentsOf([dictionary["\(i)"]!])
}
print(array)
这是我计划具有的输出:
[[["A", "A"], ["A1", "A2"]], [["B", "B"], ["B1", "B2"]], [["C", "C"], ["C1", "C2"]]]
这是我从Xcode得到的错误:
发生了内部错误。 源代码编辑器功能受到限制。
注意:如果我删除以下行,则这是最奇怪的部分:array.appendContentsOf([dictionary [“(i)”]!]),它没有错误,但是如果我添加此行,则会收到错误消息Xcode
你很亲密! 进行了一些更改:
array
需要定义为[[[String]]]()
而不是[[AnyObject]]()
。 AnyObject
和String
不兼容追加。 另外,还添加了[]
另一层,因为您的目标是3深度而不是2的数组。 array.appendContentsOf([dictionary["\\(i)"]!])
更改为array += [dictionary["\\(i)"]!]
因为这在所有Swift版本中都是兼容的,并且避免了附加参数的出现解开。 这提供了正确的答案(在Swift Playground中经过测试):
var dictionary = [String: [[String]]]()
var array = [[[String]]]()
dictionary["1"] = [["A", "A"], ["A1", "A2"]]
dictionary["2"] = [["B", "B"], ["B1", "B2"]]
dictionary["3"] = [["C", "C"], ["C1", "C2"]]
for i in 1...3 {
array += [dictionary["\(i)"]!]
}
// console:
// [[["A", "A"], ["A1", "A2"]], [["B", "B"], ["B1", "B2"]], [["C", "C"], ["C1", "C2"]]]
print(array)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.