我正试图在我的收藏中获取文件数量。这是我的代码:
let query = btRef
.whereField("UID", isEqualTo: UID)
.whereField("timestamp", isGreaterThan: startOfDate)
.whereField("timestamp", isLessThan: endOfDate)
query.getDocuments(){ (querySnapshot, err) in
if (querySnapshot?.count)! > 0 {
Variable = true
}
else {
Variable = false
}
}
但是,每次我运行它时,以下行都会导致错误:“线程1:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)”
(querySnapshot?.count)! > 0
我似乎找不到解决方法。我知道我由于解开nil值而收到此错误。那么为什么querySnapshot返回nil?如果此查询中没有文档,它不应该返回0吗?
答案 0 :(得分:1)
是的,如果querySnapshot
存在并且没有文档,则计数将为0。但是在您的情况下,querySnapshot
可能是您强行解包的nil。我建议在尝试使用它之前,使用保护声明将其展开。您可能还希望解开该错误,以便可以打印它并查看querySnapshot
为零的原因。
query.getDocuments(){ (querySnapshot, err) in
if let err = err {
print(err.debugDescription)
return
}
guard let querySnapshot = querySnapshot else {
// handle the error however you like here
return
}
if (querySnapshot.count) > 0 {
Variable = true
}
else {
Variable = false
}
}