Ios Firebase有时会崩溃,但并不总是

Ios Firebase有时会崩溃,但并不总是,ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,检索数组时,我使用以下函数: self.gameRef!.observeSingleEvent(of: .value, with: { (snapshot) in let value = snapshot.value as? NSDictionary let seeds = value?["seed"] as! [Int] } 这是我的错误: 这是我的结构: 然而,大部分时间它都在工作。有时候,我会遇到这种情况

检索数组时,我使用以下函数:

self.gameRef!.observeSingleEvent(of: .value, with: { (snapshot) in
                    let value = snapshot.value as? NSDictionary
                    let seeds = value?["seed"] as! [Int]
}
这是我的错误:

这是我的结构:


然而,大部分时间它都在工作。有时候,我会遇到这种情况。我不知道为什么。谢谢您的帮助。

我会尝试打开快照值

self.gameRef!.observeSingleEvent(of: .value, with: { (snapshot) in

             if let value = snapshot.value as? [String:[Int]], let seeds = value["seed"]{
             //continue
}  
}

问题是,当您以顺序方式使用INT时,Firebase会将其视为数组。你把这当作一本字典。您应该避免使用类似于键的int,因为:

如果所有键都是整数,并且超过一半的键 对象中介于0和最大值之间的键具有非空值, 然后Firebase将其渲染为数组


您可能想看看

发生崩溃的原因很可能是因为您将强制展开为[Int],而不是可选的展开。至于为什么你的数组有时不是整数数组,是一个不同的问题,需要更多的信息来解释为什么它不能被识别。。。在查询种子之前,种子始终可用。当种子崩溃时,您是否尝试打印出
,以查看其包含的内容?您可以打开异常断点,当它在崩溃前的那一行暂停时,可以打印出
,并查看它在该点包含的内容。