我正在尝试获取集合中的文档数。这是我的代码:
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
我似乎找不到解决办法。我知道我得到这个错误是由于打开一个零值。那么为什么querySnapshot返回nil呢?如果此查询中没有文档,它不应该返回0吗?
是,如果querySnapshot
存在并且没有文档,则计数为0。然而,在您的情况下,querySnapshot
很可能是您强制展开的零。我建议在尝试使用它之前使用guard语句打开它。你可能还想打开错误,这样你就可以打印它,看看为什么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
}
}