我正在iOS项目上使用Firebase实时数据库。我无法解释的事情正在发生。我有一个带有用户的表用户,每个用户都有许多不同的字段,看起来像这样:
{
"first_name": "User First Name",
"last_name": "User Last Name",
"age": 10
}
但是我看到了一个我无法解释的怪异行为。当我使用.value
事件类型订阅观察对象或observeSingleEvent时,我只会返回first_name
而不是完整的对象。如果我转到firebase控制台并手动修改last_name
,则会得到first_name
和last_name
,但同样,我没有收到完整的对象。
我不知道还能尝试什么...我开始认为这是Firebase iOS上的缓存错误。
我的配置如下:
let database = Database.database()
database.isPersistenceEnabled = true
let path = "/users/uuid"
let reference = Database.database().reference().child(path)
reference.keepSynced(true)
refHandle = reference.observe(.value, with: { (snapshot) in
let postDict = snapshot.value
})
有任何线索吗?!
更新: 我创建了一个不同的应用程序,该应用程序连接到相同的数据库,并在初始应用程序失败时检索对象,并且我正确接收了该对象。
回答杰伊的评论:
let postDict = snapshot.value as? [String: Any] ?? []
snapshot.childrenCount
的功能,它没有返回对象的所有键。我只得到1个first_name
/users/uuid/age
上添加了一个观察值,该值为空。 .exists()
返回false
。removeObserver
。