我有一个小问题。我创建了一个大型数组。 它看起来像这样:
var Array = [
["text10", "text11", ["text01", "text02"]],
["text20", "text21", ["text11", "text12"]]
]
如果我们这样写:Array [0]显示所有元素。
如果我们这样写:数组[0] [0]显示" text1"。
如果我们这样写:显示
的数组[0] [2]-2个元素
- 0:" text01"
- 1:" text02"
如果我们这样写:数组[0] [2] .count或数组[0] [2] [0]它将无法正常工作 如何选择每个项目,我需要tableView
的这些元素答案 0 :(得分:2)
问题基本上是你的内部阵列是非法的。 Swift数组必须由单个类型的元素组成。您有两种类型的元素,String和String Of String。 Swift尝试补偿,但结果是双索引无法工作,尤其是因为无法知道特定元素是否包含String或Array。
解决方案是彻底重新构建。如果您的数组条目都包含相同的模式字符串加上字符串加上字符串数组,那么该模式会告诉您该怎么做;这应该是一个自定义结构,而不是一个数组。
答案 1 :(得分:0)
正如@matt已经回答,但我想添加这个东西
为什么数组[0] [2] .count或数组[0] [2] [0]不起作用
如果您定义数组
var array = [
["text10", "text11", ["text01", "text02"]],
["text20", "text21", ["text11", "text12"]]
]
当您输入数组时,您可以看到它的类型是 [[Any]] 但是它包含String
以及Array
所以当你试图得到Array[0][2]
时,Swift不知道你位置2的数组有另一个可以计数的数组
修改强>
你现在要问的是字典数组我建议你使用模型,即创建结构或类并使用它代替字典
现在如果你想创建字典那么
var arrOfDict = ["text10" : ["text01", "text02"] , "text11" : ["text11", "text12"]]
您可以使用键名let arrayatZero = arrOfDict["text10"] as? [String]