Swift 问题 - 数组列表中包含二维数组的字典
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 得到的错误:
An internal error occurred. Source editor functionality is limited.
注意:最奇怪的部分是,如果我删除了这一行:array.appendContentsOf([dictionary["(i)"]!]) 它没有错误,但是如果我添加了这一行行然后我从 Xcode
得到一个错误
你们非常亲密!几个变化:
array
需要定义为 [[[String]]]()
而不是 [[AnyObject]]()
。 AnyObject
和 String
不兼容追加。此外,还添加了另一层 []
,因为您的目标是深度为 3 的数组,而不是 2。
- 将
array.appendContentsOf([dictionary["\(i)"]!])
更改为 array += [dictionary["\(i)"]!]
,因为这在 Swift 的所有版本中都兼容,并且不会展开附加参数。
这提供了正确答案(在 Swift 游乐场测试):
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)
我想弄清楚我的代码有什么问题,因为 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 得到的错误:
An internal error occurred. Source editor functionality is limited.
注意:最奇怪的部分是,如果我删除了这一行:array.appendContentsOf([dictionary["(i)"]!]) 它没有错误,但是如果我添加了这一行行然后我从 Xcode
得到一个错误你们非常亲密!几个变化:
array
需要定义为[[[String]]]()
而不是[[AnyObject]]()
。AnyObject
和String
不兼容追加。此外,还添加了另一层[]
,因为您的目标是深度为 3 的数组,而不是 2。- 将
array.appendContentsOf([dictionary["\(i)"]!])
更改为array += [dictionary["\(i)"]!]
,因为这在 Swift 的所有版本中都兼容,并且不会展开附加参数。
这提供了正确答案(在 Swift 游乐场测试):
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)