我正在开发一个猜测游戏应用程序,用Swift编写并使用Firebase作为我的PaaS。应用程序构建,当我在Swift游乐场中测试它时,下面的功能工作,但是当我运行应用程序时,我收到以下错误消息:
致命错误:索引超出范围
Xcode告诉我,违规代码是randomKey = myArray[randomIndex]
行。我是Swift的新手,还不熟悉Xcode的调试工具。我已经测试了将count
和randomIndex
打印到控制台,每次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
循环中为randomIndex
和for
赋值,所以我得到了多个随机数和不同长度的数组。将它移到外面,现在它正在工作。