我想为我的作业准备一个基本的号码选择计时器,但是我无法解决此问题。
var timer = Timer()
var counter = 0
//let number = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30"]
let number = 1 ... 60
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return number[row]
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return number.count
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
label.text = number[row]
}
但是它给出了这个错误。
不能为索引为“ Int”的“ ClosedRange”类型下标
答案 0 :(得分:0)
您正在创建一个数组,因此需要在该范围内使用方括号。
let numbers = [1...60]
答案 1 :(得分:0)
您需要一个字符串数组[String]
,但是您声明了一个整数范围ClosedRange<Int>
根据范围创建一个数组,并将项目映射到String
let number = Array(1...60).map(String.init)
建议以复数形式let numbers
声明数组
答案 2 :(得分:0)
您可以简单地做到:
let numbers = Array(1...60)
这是如何工作的?
您可以自己探索。一个技巧是添加显式的init
调用:
Array.init(1...60)
,然后选项-单击init
。当您这样做时,您会得到:
摘要
创建一个包含序列元素的数组。声明
init<S>(_ s: S) where Element == S.Element, S : Sequence
讨论
您可以使用此初始值设定项从任何其他类型创建数组 符合序列协议。例如,您可能想要 创建一个从1到7的整数的数组。使用此数组 围绕某个范围的初始值设定项,而不是在 数组文字。
let numbers = Array(1...7) print(numbers) // Prints "[1, 2, 3, 4, 5, 6, 7]"