在 swift 中,我的数组如下:
var storedLevels = [
1:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 6, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 7, 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
2:[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
]
我需要能够将数组 storedLevels[1]
加载到变量中,
然后循环遍历变量中的值。
此时我已经一切正常,但是我必须在 storedValues[X]
中显式将 1 设置为 X,然后循环该代码。
这是我正在使用的功能:
func loadLevel(level: Float) {
var x: Int = 0
var y: Int = 0
let blocks = storedLevels[1]
for var i: CGFloat = 0; i <= (gBlockCountY); i += 1 {
y = Int(i)
for var i: CGFloat = 0; i <= (gBlockCountX-1); i += 1 {
x = Int(i)
var blockCountToTimes: CGFloat = CGFloat(y)-1
if blockCountToTimes < 0 {
blockCountToTimes = 0
}
let blockNumber = (gBlockCountX * blockCountToTimes) + CGFloat(x)
if let block = blocks?[Int(blockNumber)] {
addBlockToGrid(CGFloat(block), x: CGFloat(x), y: CGFloat(y))
} else {
addBlockToGrid(1, x: CGFloat(x), y: CGFloat(y))
}
}
}
}
如何让 letblocks =storedLevels[1]
使用传递给函数的值 (level: Float
) 来替换 1?
最佳答案
storedLevels
是 (Int, [Int])
类型的字典,而不是数组。我不知道为什么你需要有 key (因此使它成为一本字典)。这也很好:
var storedLevels = [ [0, 0, 0, ...], [1, 1, 1, ...] ]
let blocks = storedLevels[Int(level) - 1]
现在回到你的字典:你的键是Int
类型,但level
是Float
类型。能有1.5级吗?如果您想使用字典范例,请将 level
转换为 Int
:
let blocks = storedLevels[Int(level)]
关于ios - 从数组加载数据时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32193769/