Arrays 二维字符串数组
我想为一个选择器创建一个包含两个字符串数组的数组。每个数组需要为1-30(字符串,而不是整数) 我认为我做得对,但Xcode不同意: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]
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)