【发布时间】:2015-06-29 13:32:03
【问题描述】:
由于我对 iOS 中的原生编程非常陌生,因此在以下情况下我需要一些帮助。我需要的是一个类,它包含一个数组或字典,其中包含 2 个整数的组合作为键(用于网格矩阵中的坐标)和一个整数作为值。我在某处的教程中找到了一个解决方案,如下所示:
class Array2D<T> {
let columns: Int
let rows: Int
var array: Array<T?>
init(columns: Int, rows: Int) {
self.columns = columns
self.rows = rows
array = Array<T?>(count: rows * columns, repeatedValue: nil)
}
subscript(column: Int, row: Int) ->T! {
get {
return array[(row * columns) + column]
}
set(newValue) {
array[(row * columns) + column] = newValue
}
}
}
不幸的是,这种类型的数组已经有行*列的长度,一旦类被初始化,这是我不想要的。数组一开始应该是空的。但是,如果我初始化一个空数组,那么在获取或设置一个尚不存在的键的值时会遇到问题。此外,我需要能够轻松地增加特定键的值(如array[2, 3]++)。有人对我的问题有好的解决方案吗?
【问题讨论】:
-
您能更好地阐明您想要实现的目标吗?你有固定数量的行/列吗? “一开始是空的”是什么意思?如果之前从未设置过该值,
array[2, 3]应该返回什么? -
谢谢@ABakerSmith,这正是我想要的!
-
抱歉@Martin R 不够清楚... :(
标签: swift swift-playground swift2