Firestore querysnapshot returning nil swift



我正在尝试获取集合中的文档数。这是我的代码:

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
}
}

最新更新