迅速我有如下数组:

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))
                }
            }
        }
    }


如何使let blocks = storedLevels[1]使用传递给函数(level: Float)的值替换1?

最佳答案

storedLevels是类型(Int, [Int])的字典,而不是数组。我不知道您为什么需要钥匙(因此使其成为字典)。这也可以:

var storedLevels = [ [0, 0, 0, ...], [1, 1, 1, ...] ]
let blocks = storedLevels[Int(level) - 1]


现在回到您的字典:您的密钥是Int类型,但levelFloat。可以有1.5级吗?如果要使用字典范例,请将level强制转换为Int

let blocks = storedLevels[Int(level)]

关于ios - 无法从数组加载数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32193769/

10-11 22:46
查看更多