【发布时间】:2014-12-01 23:31:10
【问题描述】:
我有一个多维 (2D) 项目(对象)数组,我决定使用“自然”的方式来创建它(所以我没有使用将 1D 数组转换为 2D 的技巧,而是直接使用 2D)。
一个项目在矩阵上有一个 X 和 Y 位置,并且该项目也有一个随机类型。
除了所有项目的 Y 位置外,一切似乎都正常...... 由于 Swift 处理 2D 的方式,我需要初始化 2D 数组,然后正确地影响每个项目的值。
我确实验证了我对项目的影响,它们有效。然后,当我在正确设置项目后验证项目时,Y 位置对所有项目都是唯一的。
class Matrix {
var nbCol: Int
var nbRow: Int
var items: [[Item]]
init(nbCol: Int, nbRow: Int) {
self.nbCol = nbCol
self.nbRow = nbRow
items = Array<Array<Item>>()
//Initialize
for col in 0..<Int(nbCol) {
items.append(Array(count: nbRow, repeatedValue: Item()))
}
//Affect the correct values to each item
createItems()
}
func createItems() {
//Assign X, Y & type values to the item
for x in 0..<Int(nbCol) {
for y in 0..<Int(nbRow) {
items[x][y].setItem(x, y: y, type: ItemType.random())
println("Create for (\(x), \(y)): (\(items[x][y].x), \(items[x][y].y))")
}
}
//Verify the values
for x in 0..<Int(nbCol) {
for y in 0..<Int(nbRow) {
println("Check for (\(x), \(y)): (\(items[x][y].x), \(items[x][y].y))")
}
}
}
}
而项目(它的一部分)是:
class Item: Printable {
var x: Int
var y: Int
var type: ItemType //Enum
func setItem(x: Int, y: Int, type: ItemType) {
self.x = x
self.y = y
self.type = type
}
}
以及输出(问题为红色):
如您所见,在“设置值”期间,X 和 Y 是正确的。但在检查时,只有 X 是正确的,而 Y 是“卡住”的。我是不是做错了什么?
EDIT :顺便说一句,所有项目也具有相同的类型。只有 X 是正确的,Y 和类型对于所有项目都是“固定的”。
【问题讨论】:
-
[回复“我们能不能得到完整的代码”] 当然可以:gist.github.com/BabyAzerty/4e4aaa3cae6838f4b050 但我相信@Paulw11 指出了问题,但我不知道如何编写解决方案.
标签: ios arrays swift multidimensional-array