Я изучаю Swift из учебника Udemy, в котором показано, как создать приложение для чата с использованием базы данных Firebase.Для собственного обучения и в качестве краткого справочного руководства я набрал код в одном файле .swift, чтобы получить быстрый обзор всего приложения и отладить практику.Однако у меня есть еще одна ошибка компилятора, говорящая о том, что константа messagesDB не имеет члена setValue.Я предполагаю, что messagesDB, являющийся экземпляром класса Database, будет иметь доступ к методу экземпляра setValue ().Как вы думаете, что мне не хватает, чтобы заставить эту ошибку замолчать?Имеет ли это какое-то отношение к способу объявления функций?
И класс Auth, и база данных являются произвольными классами, имитирующими Firebase, так что остальная часть кода может отображаться без кучки ошибок, что даетмне один файл, чтобы увидеть, как все работает.
class Auth {
var currentUser: String = ""
func auth() -> Self { return self }
}
class Database {
func setValue() -> Self { return self }
func database() -> Self { return self }
func reference() -> Self { return self }
func child(_ someString: String) -> String {
print(someString)
}
}
class ChatViewController: UIViewController {
@IBOutlet var messageTextfield: UITextField!
@IBOutlet var sendButton: UIButton!
@IBAction func sendPressed(_ sender: AnyObject) {
messageTextfield.endEditing(true)
messageTextfield.isEnabled = false
sendButton.isEnabled = false
let messagesDB = Database().database().reference().child("Messages")
let messageDictionary = ["Sender": Auth().auth().currentUser, "MessageBody": messageTextfield.text!] as [String : Any]
messagesDB.setValue(messageDictionary) { //ERROR: Value of type 'String' has no member 'setValue'
(error, reference) in
if error != nil {
print(error!)
} else {
print("Message saved successfully!")
self.messageTextfield.isEnabled = true
self.sendButton.isEnabled = true
self.messageTextfield.text = ""
}
}
}
}