在Swift中创建包含不同类型的多维数组

时间:2017-04-13 06:53:28

标签: arrays swift multidimensional-array types

我想在Swift中创建一个多维数组,然后继续创建多维数组this post,我想出了:

var itemList: [[(String, Date, Double, Int)]] = []

let itemID = purchases["itemID"] as! String
let purchase_date = purchases["purchase_date"] as! Date
let purchase_date_ms = purchases["purchase_date_ms"] as! Double
let quantity = purchases["quantity"] as! Int

itemList.append([(itemID, purchase_date, purchase_date_ms, quantity)])

这一切似乎都没问题,但是当我尝试用以下方法取回数据时:

var subPurchaseDate: Date
subPurchaseDate = itemList[0][1]

尝试阅读" purchase_date"数组中的值我得到错误"不能分配类型'(String,Date,Double,Int)'的值。输入'日期'"和

switch itemList[iloop][0] {
        ...
        }

给出"类型' String'的表达模式。无法匹配'(String,Date,Double,Int)''"

的类型值

为什么它没有考虑我在<array>[i][j]中尝试指定的元素的价值/类型,但似乎试图采用<array>[i]的任何线索?我没看到什么?

1 个答案:

答案 0 :(得分:4)

您已在数组中存储了元组值。因此,通过提供索引位置来访问元组的内容。

subPurchaseDate = itemList[0][1].0 // for string value
subPurchaseDate = itemList[0][1].1 // for date
subPurchaseDate = itemList[0][1].2 // for Double
subPurchaseDate = itemList[0][1].3 // for Int

您也可以使用它的命名值进行访问。

 var itemList: [[(stringValue: String, dateVal: Date, doubleValue: Double, intValue: Int)]] = []

// append elements in `itemList`
itemList.append([(stringValue: itemID, dateVal: purchase_date, doubleValue: purchase_date_ms, intValue: quantity)])

// access using it's named value

subPurchaseDate = itemList[0][1].stringValue // for string value
subPurchaseDate = itemList[0][1].dateVal // for date
subPurchaseDate = itemList[0][1].doubleValue // for Double
subPurchaseDate = itemList[0][1].intValue // for Int