Обнаружено ноль при обращении к документу Firebase: дополнительные опции не используются? - PullRequest
0 голосов
/ 18 апреля 2019

Я работаю с Firebase.При ссылке на документ и попытке изменить / добавить данные он каждый раз падает.Это дает мне поток 1: фатальная ошибка: неожиданно найден ноль при неявном развертывании необязательного значения.

Я попытался очистить проект и восстановить его.Я напечатал электронную почту пользователя (которая дает мне действительный адрес электронной почты каждый раз).Chosenbackground также определяется.Я не знаю, почему происходит сбой, потому что я не использую необязательный параметр nil.

Это то, что я импортирую:

import Foundation
import Firebase
import FirebaseAuth
import FirebaseFirestore
import FirebaseDatabase
import GoogleSignIn

Здесь я определяю db: var db : Firestore!

Здесь установлен selectedBackground и вызывается функция:

@objc func lightBlueAndOrangeImageTapped(tapGestureRecognizer: UITapGestureRecognizer){
        print("lightBlueAndOrangeTapped")
        // Your action
        selectedBackgroundLabel.text = "Light Blue and Orange Background is selected"
        chosenBackground = "lightBlueAndOrange"
        chosenBackgroundToFirebase()
    }

Это функция:

func chosenBackgroundToFirebase(){ //IN THIS FUNCTION IT CRASHES
        if let userEmail = Auth.auth().currentUser?.email {
            print("\(userEmail)")
            print("\(chosenBackground)")
            let newDocRef = db.collection("customizeDatabase").document("\(userEmail)") //ERROR ON THIS LINE

            newDocRef.updateData([
                "background": "\(chosenBackground)"
            ]) { err in
                if let err = err {
                    print("Error updating document: \(err)")
                    newDocRef.setData([
                        "background" : "\(self.chosenBackground)"
                    ])
                } else {
                    print("Document successfully updated")
                }
            }
        }
    }

Я хочу иметь возможность читать и писать документ.Большое спасибо за помощь :) Я все еще довольно новый разработчик, поэтому вся помощь была высоко оценена :) (хотя это довольно глупая ошибка).

1 Ответ

2 голосов
/ 19 апреля 2019

Если вы внимательно посмотрите на , то код , db установлен в viewDidLoad.

override func viewDidLoad() {
    super.viewDidLoad()

    // [START setup]
    let settings = FirestoreSettings()

    Firestore.firestore().settings = settings
    // [END setup]
    db = Firestore.firestore()
}

Проблема заключалась в том, что db было nil - и из-за этого переменная была неявно развернута принудительно и вызвала сбой, так как не было значения (AKA nil).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...