具有检查功能的数组超出范围

时间:2016-10-10 15:21:40

标签: ios arrays swift uitableview

我有一个数组和一个检查功能。

按下按钮时的功能:

// VARS
var workoutArray: [workout]!
var index = Int()

@IBAction func finishExerciseBtnPressed(_ sender: AnyObject) {

    // reload tabledata with next exercise in array

    print("the count of array is \(workoutArray.count)")

    if index <= workoutArray.count {
        index = index + 1
        tableView.reloadData()
        print("The exercise number is \(index)")
    } else {
        // Show finish workout button
        print("No items found anymore")
    }
}

tableView dequeReusableCell的功能:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if let cell = tableView.dequeueReusableCell(withIdentifier: "workoutStartCell", for: indexPath) as? workoutStartCell {

        let workout = workoutArray[index]
        cell.updateUI(workout: workout, exercise: index + 1)

        return cell

    }else{
        return UITableViewCell()
    }
}

我从之前的viewcontroller数字0发送到此vc顶部的索引var。我有检查方法finishExercisePressed,但无论我做什么,它都在计算低谷。它表示索引超出范围,但我正在检查索引是否等于或低于数组的计数。

这是我想要实现的目标:

enter image description here

有人可以帮帮我吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

  

我正在检查索引是否等于或低于数组的计数。

那是对的。但是,在增加索引之前,您正在执行此操作,并且由于索引从零开始,因此您应该在结束之前停止一个索引:

var index = 1 // Set the index to 1 initially to skip the title
...
if index+1 < workoutArray.count {
    index += 1
    tableView.reloadData()
    ...
}

上述检查会在递增后验证index是否会保留在范围内。