ios - 火力地堡 : How to add new attribute in existing table

标签 ios swift firebase firebase-realtime-database

我正在 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/

相关文章:

ios - removeFromSuperview() 耗时太长

swift - 在 Swift 中传递一个空 URL 作为参数

firebase - 一次关闭 Crashlytics 中的所有未解决问题?

iOS 13 新增 pageSheet/formSheet navigationBar 高度

ios - 使用 CoreLocation 获取最近的位置

ios - 尺寸等级 - 奇怪的行为

node.js - Cloud Functions for Firebase 是否支持文件操作?

android - 从 AsyncTask 的事务访问 Firebase 数据库

ios - 在 Swift 的 iPad 中没有选择任何内容时设置默认的详细 View Controller (在 Split View Controller 中)?

ios - 使用滤镜时 GPUImage 内存泄漏