wm.*_*1us 5 firebase swift firebase-realtime-database
这是我的代码:
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<Task>()
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()
}
Run Code Online (Sandbox Code Playgroud)
所以当我离开这个控制器(实际上我退出)时,我会在控制台中看到下一个警告:
[Firebase /数据库] [I-RDB04822]/users/ovLWTmGIPFaF6DaLzrPBBr13 /任务的监听器失败:permission_denied
Gab*_*tti 15
这是因为您未获得数据库授权.
您有一个侦听器附加到它没有权限的位置.
检查Realtime数据库中的Rules选项卡
如果它是
{
"rules": {
".read": "auth != null",
".write":"auth != null"
}
}
Run Code Online (Sandbox Code Playgroud)
这意味着只有授权用户才能写入和读取数据.
改为
{
"rules": {
".read": true,
".write":true
}
}
Run Code Online (Sandbox Code Playgroud)
允许任何人读/写数据库.
当然,它(通常)不是生产环境的有效规则,但检查您的问题很有用.
这意味着侦听器将附加到未经许可的位置。
您也可以放心地忽略日志记录,因为您不再需要关心数据了。
但是,如果您希望使用干净的日志:为了防止记录日志,请确保在注销之前注销观察者的注册。为此,请致电removeObserver(withHandle:...)或(在这种情况下可能会更容易)removeAllObservers。
| 归档时间: |
|
| 查看次数: |
7799 次 |
| 最近记录: |