我试图找出我的代码有什么问题,因为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中得到了一个错误
答案 0 :(得分:0)
你非常接近!一对夫妇改变了:
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)