如何防止索引超出范围崩溃?

时间:2017-02-02 21:08:29

标签: ios arrays swift indexing

我正在构建一个原型播放器应用程序,它允许我向前和向后跳过。问题是当我跳到远处或点击上一个按钮很多次应用程序崩溃,因为"索引超出范围"。我尝试了很多东西,但无法解决这个问题。这是我的代码。谢谢!

let player = AVPlayer()

var urlPlayerItems = [String]()

var currentTrack: Int = 0

    @IBAction func didTapPreviousButton(_ sender: UIButton) {
    if (currentTrack - 1) < 0 {
        currentTrack = (urlPlayerItems.count - 1) < 0 ? 0 : (urlPlayerItems.count - 1)
    } else {
        currentTrack -= 1
    }

    playTrack()

}



@IBAction func didTapNextButton(_ sender: UIButton) {
    if (currentTrack + 1) > urlPlayerItems.count {
        currentTrack = 0
    } else {
        currentTrack += 1
    }

    playTrack()
}

2 个答案:

答案 0 :(得分:1)

let player = AVPlayer()

var urlPlayerItems = [String]()

var currentTrack: Int = 0

@IBAction func didTapPreviousButton(_ sender: UIButton) {
    if currentTrack >= 1 {
        currentTrack -= 1
    }

    playTrack()
}

@IBAction func didTapNextButton(_ sender: UIButton) {
    if currentTrack <= urlPlayerItems.count - 2 {
        currentTrack += 1
    }

    playTrack()
}

答案 1 :(得分:0)

如果您只是想查看一个索引在给定数组中是否有效,那么这里只是一个扩展:

extension Array {
    func canSupport(index: Int ) -> Bool {
        return index >= startIndex && index < endIndex
    }
}

let test = ["", ""]
print(test.canSupport(index: 0)) //prints true
print(test.canSupport(index: 2)) //prints false
相关问题