#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. Можете ли вы опубликовать фотографию печати (привязки)