以下是代码:
import UIKit
class ViewController: UIViewController, UITableViewDelegate {
@IBAction func sliderMoved(sender: UISlider) {
var sliderValue = Int(sender.value)
println(sliderValue)
}
@IBOutlet var sliderValue: UISlider!
var arr:[Int] = []
for index in 0...21 {
arr.append(index)
}
println(arr)
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 20
}
/*
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cell")
cell.textLabel?.text = sliderValue.value * arr[indexPath.row]
}
*/
}
它在第3行给出了错误。
**我不得不删除一些代码,堆栈溢出不喜欢那么多代码。我只删除了viewDidLoad和didReceiveMemoryWarning代码。
答案 0 :(得分:2)
这是一个非常简单的修复:您必须在++
运算符和左括号之间添加空格:
for var i = 0; i < 21; i++ {
^
没有它,我认为编译器会尝试将++{
视为运算符。
使用不断增加的数字初始化数组的另一种方法是:
var arr: [Int] = (0..<21).map {$0}
<强>更新强>
代码必须放在方法内 - 您不能在同一级别的属性上执行代码。我建议使用我的答案中描述的替代方法内联初始化该属性,该方法应该有效。
如果您仍想使用内联初始化,但要执行更复杂的代码,还可以通过定义闭包并立即执行它来初始化该属性:
var arr:[Int] = {
var array = [Int]()
for index in 0...21 {
array.append(index)
}
return array
}()
答案 1 :(得分:0)
我建议使用for循环的swift语法:
for i in 1..<21 {
arr.append(i)
}