Dokumen Firestore ada mengembalikan hasil yang salah di iOS Swift [duplikat]

Tidak ada satu pun dokumen atau koleksi yang ada di database Firestore saya, tetapi saat memanggil kode ini, kode ini akan mencetak "Dokumen ada == benar. Data pengguna: (pengguna.data())"

libc++abi.dylib: diakhiri dengan pengecualian tipe NSException (lldb) yang tidak tertangkap

kesalahan.

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())")
}

Apa yang saya lakukan salah di sini?


person user3116871    schedule 14.01.2018    source sumber
comment
@CMont Terima kasih, itu membantu saya memahami masalahnya   -  person user3116871    schedule 14.01.2018


Jawaban (1)


Anda harus menggunakan ada selain memeriksa apakah snapshot non null dikembalikan:

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
Bisakah seseorang menjelaskan kepada saya baris ini let user = snapshot.exists ? cuplikan : nihil tolong. Apa fungsinya? lakukan dalam kasus ini. Mencari dokumentasi Swift tetapi tidak menemukan apa pun. - person Ben; 28.02.2018
comment
Ini adalah operator ternary, seperti yang ditemukan di sebagian besar bahasa. Lihat developer.apple.com/library/content/documentation/Swift/. Saya dapat memahami bahwa mencari ? bisa menyakitkan... - person CMont; 09.03.2018