База данных Firebase не загружается

#ios #swift #firebase #firebase-realtime-database #swift3

#iOS #swift #firebase #firebase-база данных в реальном времени #swift3

Вопрос:

У меня есть мой код загрузки здесь

 import UIKit
import Firebase

class ChatViewController: UIViewController {

    let chatRef = FIRDatabase.database().reference().child("chat")
    let userUid = FIRAuth.auth()?.currentUser?.uid
    var userName = ""
    @IBOutlet weak var topBar: UINavigationItem!
    @IBOutlet weak var containerView: UIView!
    @IBOutlet var inputTextField: UITextField!
    override func viewDidLoad() {
    super.viewDidLoad()
    topBar.title = "Chat Log Controller"
    FIRDatabase.database().reference().child("users/(userUid!)/name").observe(.value) { (snap: FIRDataSnapshot) in
        self.userName = (snap.value! as! String).description
    }
}

@IBAction func handleSend(_ sender: AnyObject) {
    let childChatRef = chatRef.childByAutoId()
    let message = inputTextField.text!
    childChatRef.child("text").setValue(message)
    print(inputTextField.text)
}

@IBAction func handleSendByEnter(_ sender: AnyObject) {
    let childChatRef = chatRef.childByAutoId()
    let message = inputTextField.text!
    print(userName)
    childChatRef.child("name").setValue(userName)
    childChatRef.child("text").setValue(message)
    print(inputTextField.text)
}
  

}

текст успешно загружен, но он не печатает имя пользователя и не загружает его в базу данных Firebase, но имя пользователя равно нулю!

Ответ №1:

Попробуйте использовать свой код наблюдателя как,

 ref.observeSingleEventOfType(.Value, withBlock: { snapshot in
  

}

Комментарии:

1. когда я печатаю snapshot.value, он печатает хорошо, но позже, когда я печатаю свою переменную userName, она ничего не печатает.

Ответ №2:

Просто примите self.username = snap.value! as! String это, это решит вашу проблему.

Комментарии:

1. Можете ли вы опубликовать фотографию печати (привязки)