มีเอกสาร Firestore ส่งคืนผลลัพธ์เท็จใน iOS Swift [ซ้ำกัน]

ไม่มีเอกสารหรือคอลเลกชันเดียวอยู่ในฐานข้อมูล Firestore ของฉัน แต่เมื่อเรียกรหัสนี้จะพิมพ์ว่า "Document มีอยู่ == true ข้อมูลผู้ใช้: (user.data())"

libc++abi.dylib: สิ้นสุดด้วยข้อยกเว้นที่ไม่ถูกตรวจจับประเภท NSException (lldb)

ข้อผิดพลาด.

let reference = database.collection("users").document(currentUser.uid)

reference.getDocument { (snapshot, error) in
    guard let user = snapshot else {
        print("Document exist == false")
        return
    }

    print("Document exist == true. User data:  \(user.data())")
}

ฉันทำอะไรผิดที่นี่?


person user3116871    schedule 14.01.2018    source แหล่งที่มา
comment
@CMont ขอบคุณที่ช่วยให้ฉันเข้าใจปัญหา   -  person user3116871    schedule 14.01.2018


คำตอบ (1)


คุณควรใช้ มีอยู่ นอกเหนือจากการตรวจสอบว่าสแนปช็อตที่ไม่ใช่ค่าว่างถูกส่งคืน:

let reference = database.collection("users").document(currentUser.uid)

reference.getDocument { (snapshot, error) in

    guard
        let snapshot = snapshot,
        let user = snapshot.exists ? snapshot : nil
    else {
        print("Document exist == false")
        return
    }
    print("Document exist == true. User data:  \(user.data())")
}
person CMont    schedule 14.01.2018
comment
ใครช่วยอธิบายบรรทัดนี้ให้ฉันหน่อย user = snapshot.exists ? snapshot : ไม่มีเลย ได้โปรด อะไร ? ทำในกรณีนี้ ค้นหาเอกสาร Swift แต่ไม่พบสิ่งใดเลย - person Ben; 28.02.2018
comment
มันเป็นตัวดำเนินการที่ประกอบด้วยสามตามที่พบในภาษาส่วนใหญ่ ดู developer.apple.com/library/content/documentation/Swift/ ฉันเข้าใจได้ว่ากำลังค้นหา ? อาจเจ็บปวดได้ ... - person CMont; 09.03.2018