我在Swift 4中有一个简单的类,如下所示:
class Message {
var messageBody : String = ""
var sender : String = ""
}
我想(用一行)用该对象的实例填充变量。
我试图这样做:
func retrieveMessages() {
let messageDB = Database.database().reference().child("Messages")
messageDB.observe(.childAdded) { (snapshot) in
let snapshotValue = snapshot.value as! Dictionary<String,String>
let text = snapshotValue["MessageBody"]!
let sender = snapshotValue["Sender"]!
let message = Message(messageBody: text, sender: sender) // relevant one liner
}
}
但这不起作用。我在做什么错了?
还请注意:
let message = Message()
message.messageBody = text
message.sender = sender
有效。
答案 0 :(得分:2)
只需使用结构,即可提供免费的 memberwise 初始化程序
struct Message {
var messageBody : String
var sender : String
}
或者如果是班写一个
class Message {
var messageBody : String
var sender : String
init(messageBody : String, sender : String) {
self.messageBody = messageBody
self.sender = sender
}
}
在两种情况下都无需分配默认值。
有关更多信息,请阅读Swift Language Guide : Initialization