如何实现以下输出:
rsPool[0][p1] = "123"
rsPool[0][p2] = "234"
rsPool[1][p1] = "abc"
rsPool[1][p2] = "bcd"
我从JSON输出反序列化,它具有以下数据
first dimention > type (1 to 7)
second dimention > p1...P10
value > xxxx
我试图创建:
var rspool : [Int: String] : []
但我不知道如何添加/附加到数组。
答案 0 :(得分:2)
您可以多次使用方括号来定义多维数组:
var rspool: [[String]] = [["123", "234"], ["abc", "bcd"]]
print(rspool[0][0])
print(rspool[0][1])
print(rspool[1][0])
print(rspool[1][1])
//123
//234
//abc
//bcd
这是String
。
动态数组
通常使用动态更改的数组大小,使用Array
,append
和insert
等removeAtIndex
方法。让我们从空数组中给出给定的数组:
var rspool = [[String]]()
rspool.append([String]()) //adding first line; now we can access it by rspool[0]
rspool[0].append("abc")
rspool[0].append("bcd")
//we started from second line for to show example with insert:
rspool.insert([String](), atIndex: 0) //inserting new line as first line
rspool[0].append("123")
rspool[0].append("234")
print(rspool)
//[["123", "234"], ["abc", "bcd"]]
您需要始终小心通过索引访问此数组,因为您可以接收"索引超出范围"例外。您可以通过索引直接读取和覆盖数组中已存在的值:
let veryFirst = raspol[0][0]
raspol[0][0] = "456"
静态数组
如果您希望仅通过索引(也就是矩阵样式)操作数组,则需要设置常量尺寸并首先初始化所有数组。 Optional
类型为元素类型,重复值非常有用:
let m = 3
let n = 5
var rspool = [[String?]](count: m, repeatedValue: [String?](count: n, repeatedValue: nil))
现在您可以通过索引读取写元素:
rspool[0][0] = "123"
rspool[0][1] = "234"
rspool[1][0] = "abc"
rspool[1][1] = "bcd"
print(rspool)
//[[Optional("123"), Optional("234"), nil, nil, nil], [Optional("abc"), Optional("bcd"), nil, nil, nil], [nil, nil, nil, nil, nil]]
矩阵式数组计算示例:
rspool[2][4] = "END"
for i in 0..<m {
for j in 0..<n {
print("\(rspool[i][j] ?? ".")\t", terminator: "")
}
print()
}
//123 234 . . .
//abc bcd . . .
//. . . . END
答案 1 :(得分:0)