Существующий документ Firestore возвращает ложный результат в iOS Swift

В моей базе данных Firestore нет ни одного документа или коллекции, но при вызове этого кода он выводит «Документ существует == 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)


Вы должны использовать exists в дополнение к проверке того, что был возвращен не нулевой снимок:

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
Может кто-нибудь объяснить мне эту строку let user = snapshot.exists? снимок: нет, пожалуйста. Что это ? сделать в этом случае. Искал документацию Swift, но ничего не нашел. - person Ben; 28.02.2018
comment
Это тернарный оператор, который можно найти в большинстве языков. См. developer.apple.com/library/content/documentation/Swift/. Я могу понять, что ищет ? может быть больно... - person CMont; 09.03.2018