【发布时间】:2019-07-25 23:17:09
【问题描述】:
我正在通过 Udemy 教程学习 Swift,该教程展示了如何使用 Firebase 数据库制作聊天应用程序。为了我自己的学习和快速参考指南,我在一个 .swift 文件中键入了代码,以快速了解整个应用程序并练习调试。但是,我还有一个编译器错误说常量“messagesDB”没有成员“setValue”。我假设messagesDB 作为“数据库”类的一个实例可以访问setValue() 实例方法。为了消除这个错误,您认为我缺少什么?和函数的声明方式有关系吗?
Auth 和 Database 类都是模仿 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 = ""
}
}
}
}
【问题讨论】:
-
至少你的意思可能是
..."MessageBody": messageTextfield.text!] -
谢谢!我对那个缺失的部分进行了编辑。不幸的是,仍然有一个错误。
标签: ios swift firebase firebase-realtime-database swift4