Firestore查询快照返回nil swift

时间:2018-07-09 19:44:58

标签: swift firebase google-cloud-firestore

我正试图在我的收藏中获取文件数量。这是我的代码:

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吗?

1 个答案:

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