我正在 swift 开发一个项目,使用 firebase 作为管理数据的后端。
FirebaseApp.configure()
Database.database().isPersistenceEnabled = true
这是我在应用委托(delegate)文件中设置的。现在在我的聊天模块中,我通过以下代码在 firebase 数据库中添加了消息信息。
let messageData = ["text": text, "senderId": senderId, "senderName": senderDisplayName, "MediaType": "TEXT"]
self.messageSentRef?.child("Messages").childByAutoId().setValue(messageData)
现在我想在消息表中添加一个名为 TimeStamp 的新属性。
任何人都可以帮助我如何做到这一点?
最佳答案
如果你有一个 MessageItem/MessageData 对象,你总是可以通过修改你的对象结构来添加更多的属性。为了将 timestamp
添加到现有数据中,您可以直接将其添加到您的 Firebase/Database 控制台中(这是一种手动方式,或者只是在代码中这样做)
let messageItem = MessageItem(text: text,
senderId: self.user.email,
senderDisplayName: false,
mediaType: "",
timestamp: "")
let messageItemRef = self.ref.child("Message")
messageItemRef.setValue(messageItem.toAnyObject())
编辑: 原始问题没有 MessageItem 对象,所以让我们将一个对象放在一起使这个答案有效:
在您的 viewController 类(或任何顶级类)中,我们需要像这样实现一个 MessageItem 类对象
class MessageItem {
var text = ""
var senderId = ""
var senderDisplayName = false
var mediaType = ""
var timestamp = ""
init(text: String, senderId: String, senderDisplayName: Bool, mediaType: String, timestamp: String) {
self.text = text
self.senderId = senderId
self.senderDisplayName = senderDisplayName
self.mediaType = mediaType
self.timestamp = timestamp
}
func toAnyObject() -> Any {
return [
"text": text,
"senderId": senderId,
"senderDisplayName": senderDisplayName,
"mediaType": mediaType,
"timestamp": timestamp
]
}
}
关于ios - 火力地堡 : How to add new attribute in existing table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44962859/