繁体   English   中英

Swift Issue-数组列表中带有二维数组的字典

[英]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

你很亲密! 进行了一些更改:

  1. array需要定义为[[[String]]]()而不是[[AnyObject]]() AnyObjectString不兼容追加。 另外,还添加了[]另一层,因为您的目标是3深度而不是2的数组。
  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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM