Swift,生成编号列表的数组变量

Swift, Generating Array Variables of a Numbered List

我正在 swift 和 xcode 中制作一个简单的游戏,我 运行 遇到了这个我无法解决的问题。因为我有很多级别,所以代码锁定了索引并减慢了整个程序。我让色轮旋转了几分钟,但它从未崩溃。每次输入几个字符只需要几分钟。 St运行ge,但是 xcode 总是有它的错误,对吗?

每个按钮(下面的 "button1, button2...")从 "level1:Array" 获得一个数字。它就像一个代码,为游戏填充按钮的值。只有 4 个按钮,但数字应该可以更改,因为它们每个都有自己的变量。

我想为每一关都生成这个。我应该能够生成类似 "button1 = level#[0]" 的内容,其中 # 被 "userLevel" 替换。更改为字符串并执行类似 "button1 = ("level(userLevel)") as! Array... 似乎不起作用。请看下面,如果可以的话,请在举例时使用我的术语。谢谢!

示例如下:

let level1:Array = [9,7,4,1] // current puzzle, to go directly into button vars below (button1,button2,ect)
var userLevel = 1   // current user's level

if userLevel == 1 {
    print("making Level 1, setting buttons to value from array")
    button1 = level1[0]
    button2 = level1[1]
    button3 = level1[2]
    button4 = level1[3]
}

现在,由于 level# 经常重复(随着数字的增加,每个级别都会重复)我宁愿把它做​​成这样:

//this doesn't work in swift, but what else can I do?
if userLevel > 0 {
button1 = level\(userLevel)[0]
button2 = level\(userLevel)[1]
button3 = level\(userLevel)[2]
button4 = level\(userLevel)[3]
}  

有没有简单的方法来做到这一点?谢谢! -GG

尝试使用 for-in 循环。创建一个按钮数组,然后

var index = 0

for button in buttons {
button = level1[index]
index++
}

EDIT 因为你希望用户级别和级别数都增加,所以我建议你这样定义级别。 (确保按钮的数量等于userLevels的数量,否则会出问题)

var array = [1,2,3]
let levels = [1:[1,3,8],2:[3,6,4],3:[4,2,5]]

var index = 0
if array.count == levels.count {
  for number in array {
  array[index] = levels[index+1]![index]//The second index can be 0 if you want
  index++
  }
}
//array = [1,6,5]
// You could create a second index to match the number of levels within the main user level.

在这种情况下,假设 array 是您的按钮数组

编辑 2 :) 我做了一个函数,允许您为特定用户级别将所有级别分配给您的数组,因为我看到这就是您想要的

let levels = [1:[1,3,8],2:[3,6,4],3:[4,2,5]]

func assignValuesToArray(levelNo:Int) -> [Int] {

var array: [Int] = []

if (levelNo > 0) && (levelNo <= levels.count) {

for (level,levelArray) in levels {

    if level == levelNo {

        for value in levelArray {

            array.append(value)


            }

        }

    }

    return array

} else {

    print("This Level number does not exist")
    return []
}
}

var finalArray = assignValuesToArray(2)
print(finalArray) // Returns [3,6,4]

正如您从该示例中看到的那样,您将从函数中 return 按钮数组,并且可以将 returned 数组值分配给任何您喜欢的值。