swift没有捕获firebase firestore权限错误,请尝试捕获
Posted
技术标签:
【中文标题】swift没有捕获firebase firestore权限错误,请尝试捕获【英文标题】:firebase firestore permission error not being caught by swift do try catch 【发布时间】:2021-03-31 02:56:06 【问题描述】:我在 swift 方法中有以下代码,可以在 firestore 中保存一些数据:
do
try db.collection("data").document("sample").setData(from: docData)
catch
print("\(error)")
所以它可以工作,但我有一些我正在测试的 Firestore 安全规则,它们也在工作 - 在应该写入时允许写入,在应该写入时拒绝。唯一的问题是,当服务器拒绝时,swift 没有启动。
如果写入被拒绝,Xcode 日志输出会显示:
WriteStream Stream error: 'Permission denied: Missing or insufficient permissions.'
Write at ... failed: Missing or insufficient permissions.
所以它被正确地拒绝了,因为安全规则被正确应用,但 swift 没有在catch
下捡起它。我试图查看这个并查看了文档,但 Firebase/Firestore 文档甚至还没有更新到为setData(from:)
抛出的新 SDK
有什么想法或建议吗?
【问题讨论】:
你检查过 Firestore git 是否存在这个问题? 我有但找不到任何东西,这就是我在这里发帖的原因。 【参考方案1】:尝试使用 Firestore catch 子句而不是 Swift 子句进行查询,如 example in the documentation for Swift 所示:
// Add a new document in collection "cities"
db.collection("cities").document("LA").setData([
"name": "Los Angeles",
"state": "CA",
"country": "USA"
]) err in
if let err = err
print("Error writing document: \(err)")
else
print("Document successfully written!")
这样你应该能够处理错误。
【讨论】:
以上是关于swift没有捕获firebase firestore权限错误,请尝试捕获的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 swift 和 firebase 正确使用完成处理程序?
Flutter firebase消息:iOS手机没有消息捕获
输入“用户?”没有成员 UID(Swift 3、Firebase)