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

标签 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)’的值分配给类型‘Date’”,并且

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

给出“‘String’类型的表达式模式无法匹配‘(String, Date, Double, Int)’类型的值”

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

最佳答案

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

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

关于arrays - 在 Swift 中创建包含不同类型的多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43385440/

相关文章:

python - 在 Python 中索引 NumPy 图像数组时出错

ios - 如何删除数组swift 4中等于特定值的所有元素?

ios - 用于求解数字因数和显示的 Swift 应用程序

非均匀多维数组上的 C++ 迭代

node.js - 多维数组的 Mongoose 模式解决方法

c - 如何在没有变量的情况下将数组添加到 GSList?

php - POST 数千个变量与一个长 JSON 字符串 : what is preferrable?

ios - 使用WKWebView读取本地存储数据

ios - 关于自动布局

multidimensional-array - 从数组返回索引和值