作者:手机用户2602905005 | 来源:互联网 | 2023-02-10 09:19
这是我的代码:
var handler:FIRDatabaseHandle!
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.handler = self.ref.observe(.value, with: {[weak self] (snapshot) in
var _tasks = Array()
for item in snapshot.children {
let task = Task(snapshot: item as! FIRDataSnapshot)
_tasks.append(task)
}
self?.tasks = _tasks
self?.tableView.reloadData()
})
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
self.ref.removeAllObservers()
}
所以当我离开这个控制器(实际上我退出)时,我会在控制台中看到下一个警告:
[Firebase /数据库] [I-RDB04822]/users/ovLWTmGIPFaF6DaLzrPBBr13 /任务的监听器失败:permission_denied
Gabriele Mar..
15
这是因为您未获得数据库授权.
您有一个侦听器附加到它没有权限的位置.
检查Realtime数据库中的Rules选项卡
如果它是
{
"rules": {
".read": "auth != null",
".write":"auth != null"
}
}
这意味着只有授权用户才能写入和读取数据.
改为
{
"rules": {
".read": true,
".write":true
}
}
允许任何人读/写数据库.
当然,它(通常)不是生产环境的有效规则,但检查您的问题很有用.
1> Gabriele Mar..:
这是因为您未获得数据库授权.
您有一个侦听器附加到它没有权限的位置.
检查Realtime数据库中的Rules选项卡
如果它是
{
"rules": {
".read": "auth != null",
".write":"auth != null"
}
}
这意味着只有授权用户才能写入和读取数据.
改为
{
"rules": {
".read": true,
".write":true
}
}
允许任何人读/写数据库.
当然,它(通常)不是生产环境的有效规则,但检查您的问题很有用.
2> Frank van Pu..:
这意味着侦听器将附加到未经许可的位置。
您也可以放心地忽略日志记录,因为您不再需要关心数据了。
但是,如果您希望使用干净的日志:为了防止记录日志,请确保在注销之前注销观察者的注册。为此,请致电removeObserver(withHandle:...)
或(在这种情况下可能会更容易)removeAllObservers
。
3> Khawar Islam..:
请查找图像并按照以下步骤操作。如果您是初学者,并且在图像中面临问题。我制作了一些关于错误的视频。
视频解决方案:
https : //youtu.be/fZrOkCqQpTc
图像解决方案: