簡體   English   中英

iOS Swift 2-如何構造多維數組

[英]IOS Swift 2 - How to construct multidimensional array

如何獲得以下輸出:

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

但我不知道如何添加/添加到數組。

您可以使用方括號多次定義多維數組:

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數組的數組。

動態數組

通常,您可以通過使用諸如appendinsertremoveAtIndex類的Array方法來使用動態更改的數組大小。 讓我們從空數組組成給定數組:

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))

現在您可以按索引讀取write元素:

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

您的數據似乎是這樣的:

var rsPool = [
    [
        "p1": "123",
        "p2": "234"
    ],
    [
        "p1": "abc",
        "p2": "bcd"
    ]
]

類型為[Dictionary<String, String>]

因此,聲明應為:

var rsPool: [[String:String]]

這是Playground參考資料: 玩

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM