This question already has an answer here:
Swift: How to declare a 2d array (grid or matrix) in Swift to allow random insert
(1个答案)
4年前关闭。
由于我是iOS原生编程的新手,因此在以下情况下我需要一些帮助。我需要的是一个类,其中包含一个数组或字典,该数组或字典具有2个整数的组合作为键(用于网格矩阵中的坐标),而Integer作为值。我在某个地方的教程中找到了一个解决方案,看起来像这样:
不幸的是,在初始化类后,这种类型的数组已经具有行*列的长度,这是我不想要的。数组开头应为空。但是,如果我初始化一个空数组,则在获取或设置尚不存在的键的值时会遇到问题。另外,我需要能够轻松地增加特定键的值(例如
(1个答案)
4年前关闭。
由于我是iOS原生编程的新手,因此在以下情况下我需要一些帮助。我需要的是一个类,其中包含一个数组或字典,该数组或字典具有2个整数的组合作为键(用于网格矩阵中的坐标),而Integer作为值。我在某个地方的教程中找到了一个解决方案,看起来像这样:
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]++
)。有人能很好地解决我的问题吗? 最佳答案
只需将其与可选参数一起使用,就不会设置任何初始值。在此示例中,您有columns
和rows
,它们是可选的,并用nil
初始化。该数组被初始化为空数组。
class Array2D<T> {
let columns: Int? = nil
let rows: Int? = nil
var array: Array<T?> = []
}