【发布时间】:2017-12-21 18:43:24
【问题描述】:
我需要以不同于所有其他错误的方式处理“Permission Denied”错误。
在 Android 中我已经做到了:(Kotlin)
override fun onCancelled(error: DatabaseError) {
if (error.code == DatabaseError.PERMISSION_DENIED) {
// Warn user
}
}
在 iOS 中我只有:
someDbReference.observe(.childAdded, with: { data in
// Do something
}, withCancel: { err in
// err is Error
print((err as NSError).code) // 1
// Which error? O_o
})
如何判断错误类型?我已经阅读了整个文档,我认为err.localizedDescription == "Permission Denied" 是一个非常糟糕的方法。
【问题讨论】:
-
我认为您可以查看
error.code对于该特定错误是否是唯一的。然后检查该特定代码是否存在 -
@kathayatnk "
Error类型的值没有成员code" -
嗯...你确定
err是NSError而不是Error? -
@paper1111 是
Error,转换为NSError,但error.code不等于-3 -
根据 FirebaseDatabase 上的源代码文档,它说
The cancelBlock will be called if you will no longer receive new events due to no longer having permission.所以我相信它只会在permission denied上被调用。如果是这种情况,您不必检查那里的特定错误
标签: ios swift firebase firebase-realtime-database