Ошибка fatal error при пересохранении данных в Firebase?


#1

Пытаюсь изменить данные в уже созданной записи в Firebase, а мне выдает “fatal error: unexpectedly found nil while unwrapping an Optional valuе”

// КЛАСС SHOWVIECONTROLLER

var posts :Post?
var refNotes: DatabaseReference!
func saveCustomer()->Bool{
   
    if posts == nil{
        print("ничего нет")
        add()
    }else{
        print("что-то есть")
        let id = self.posts?.postID
        let name = nameTextField.text
        let surname = surnameTextField.text

        self.update(id: id!, name: name!, surname: surname!)
    }
    return true
}

func add(){
    let name = nameTextField.text
    let surname = surnameTextField.text
    
    let dateSting = String(describing: Date())
    let parameters = ["surname"     : surname,
                      "name"        : name,
                      "date"        : dateSting]
    
    DatabaseService.shared.postReference.childByAutoId().setValue(parameters)
}

func update(id:String, name:String, surname:String){

    let dateSting = String(describing: Date())
    let parameters = ["id"     : id,
                      "name"   : name,
                      "surname": surname,
                      "date"   : dateSting]
    
    refNotes.child(id).setValue(parameters) // ОШИБКА ЗДЕСЬ
}

// CТРУКТРА POST

> import Foundation
>     struct Post {
>         let postID: String
>         let name: String
>         let surname: String
>         let date: Date

init?(postID:String?, dict: [String:Any]){
    
    self.postID = postID!
    
    let dataFormatter = DateFormatter()
    dataFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss +zzzz"
    
    guard let name = dict["name"] as? String,
    let surname = dict["surname"] as? String,
        
    let dateString = dict["date"] as? String,
    let date = dataFormatter.date(from: dateString)
        else { return nil }
    
    self.name = name
    self.surname = surname
    self.date = date
    
}

}

Абсолютно не могу понять откуда там берется nil.
Притом что ошибка есть даже если передавать сразу готовые значения.


#2

Исправил ошибку, добавив одну строку в метод update().

func update(id:String, name:String, surname:String){

    let dateSting = String(describing: Date())
    let parameters = ["id"     : id,
                      "name"   : name,
                      "surname": surname,
                      "date"   : dateSting]
    
    refNotes = Database.database().reference().child("posts") // ДОБАВИЛ ЭТО СТРОКУ
    refNotes.child(id).setValue(parameters) // ОШИБКА БЫЛА ЗДЕСЬ
}