致命错误:索引超出范围(Swift 3,Xcode 8)

时间:2016-08-05 22:16:26

标签: ios swift xcode firebase firebase-realtime-database

我正在开发一个猜测游戏应用程序,用Swift编写并使用Firebase作为我的PaaS。应用程序构建,当我在Swift游乐场中测试它时,下面的功能工作,但是当我运行应用程序时,我收到以下错误消息:

  

致命错误:索引超出范围

Xcode告诉我,违规代码是randomKey = myArray[randomIndex]行。我是Swift的新手,还不熟悉Xcode的调试工具。我已经测试了将countrandomIndex打印到控制台,每次randomIndex< count正如所料。在引发致命错误之前,print("The random key is...行也会成功打印到控制台。

我已检查过与此错误相关的其他SO文章,但未能将其应用于我的问题。

不太确定我在这里做错了什么。

var movieArray = [String]()
var randomIndex : Int = 0
var randomKey = ""

    func randomKeyfromFIR () -> String {
        var count = 0
        movieRef.observeSingleEvent(of: .value, with: { (snapshot) in
            for movie in snapshot.children {
                let movies = movie as! FIRDataSnapshot
                count = Int(movies.childrenCount)
                movieArray.append(movies.key)
                randomIndex = Int(arc4random_uniform(UInt32(count)))
                randomKey = movieArray[randomIndex]
                print("** The random key is... " + randomKey + " **")
            }

        return randomKey
    }

提前感谢您的帮助。如果没有大量的SO,绝对不会这么做。

更新

因为我在randomKey循环中为randomIndexfor赋值,所以我得到了多个随机数和不同长度的数组。将它移到外面,现在它正在工作。

0 个答案:

没有答案