Arrays 二维字符串数组

Arrays 二维字符串数组,arrays,swift,Arrays,Swift,我想为一个选择器创建一个包含两个字符串数组的数组。每个数组需要为1-30(字符串,而不是整数) 我认为我做得对,但Xcode不同意: var scorePickerArray: [[String]] = [] for var i: Int = 0; i < 2; i++ { for var j: Int = 0; j < 30; j++ { scorePickerArray[i]

我想为一个选择器创建一个包含两个字符串数组的数组。每个数组需要为1-30(字符串,而不是整数)

我认为我做得对,但Xcode不同意:

var scorePickerArray: [[String]] = []

    for var i: Int = 0; i < 2; i++
        {
            for var j: Int = 0; j < 30; j++
            {
                scorePickerArray[i][j] = String(j + 1)
            }
        }
var scorePickerArray:[[String]]=[]
对于变量i:Int=0;i<2;我++
{
对于变量j:Int=0;j<30;j++
{
scorePickerArray[i][j]=字符串(j+1)
}
}
我得到了scorePickerArray[0][0]的“数组索引超出范围”


我做错了什么?(可能是非常明显的)

您的版本不起作用,因为当您请求
scorePickerArray[0][0]
时,第二维度尚未创建,因此它是“出界的”,也就是说
scorePickerArray[0]
还没有成员,您无法使用下标(
[0][0]
)访问它们

解决方案:

var scorePickerArray = [[String]]()

var temp = [String]()

for i in 1...30 {
    temp.append("\(i)")
}

for i in 0...1 {
    scorePickerArray.append(temp)
}
结果:

[“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“11”、“12”、“13”、“14”、“15”、“16”、“17”、“18”、“19”、“20”、“21”、“23”、“24”、“25”、“26”、“27”、“28”、“29”、“30”]、[“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“11”、“13”、“14”、“16”、“17”、“19”、“20”、“21”、“22”、“23”、“24”、“25”、“26”、“28”、“28”、“29”、“30”]、[“1”、“2”、“3”、“4”、“5”、“6”、“6”、“7”、“8”、“9”、“10”、“11”、“12”、“13”、“14”、“15”、“15”、“16”、“17”、“18”、“18”、“19”、“20”、“21”、“22”、“23”、“24”、“24”、“25”、“25


Swift 2的更新

Swift 2更好的解决方案是使用从范围生成的整数数组(每个整数映射到字符串),而不是循环:

let innerArray = Array(1...30).map { String($0) }
然后像这样重复:

let scorePickerArray = Array(count:2, repeatedValue: innerArray)