【问题标题】:create Realm DB for each user in Chat App为 Chat App 中的每个用户创建 Realm DB
【发布时间】:2017-05-18 15:43:05
【问题描述】:

这个用于发送消息并将其保存到领域数据库

 var messageIndex = try! Realm().objects(MessageRealm.self).sorted(byKeyPath: "timeStamp")

 func didPressSend(text: String) {
    if self.inputContinerView.inputTextField.text! != "" {
        let messageDB = MessageRealm()
        let realm = try! Realm()
        let userRealm = UsersRealm()

        messageDB.textDownloadded = text
        messageDB.fromId = user!.fromId
        messageDB.timeStamp = Date()
        print(messageDB)

        try! realm.write ({
            print(realm.configuration.fileURL)
            userRealm.msgs.append(messageDB)
            //realm.create(MessageRealm.self, value: ["textDownloadded": text, "fromId": user!.fromId, "timeStamp": Date()])
        })
        if let userTitleName = user?.toId {
            print(userTitleName)
            OneMessage.sendMessage(text, thread: "AAAWatree", to: userTitleName, isPhoto: false, isVideo: false, isVoice: false, isLocation: false, timeStamp: date, completionHandler: { (stream, message) in
                DispatchQueue.main.async {
                    OneMessage.sharedInstance.deleteCoreDataMessage()
                }
                self.inputContinerView.inputTextField.text! = ""
            })
        }
    }
}

这用于接收消息时尝试保存用户(发送 id)

  let realm = try! Realm()
                    userData.sender = sender
                    userData.toId = toUser
                    print(userData.sender)
                    print(userData.toId)
                        try! realm.write ({
                            realm.add(userData, update: true)

                        })

这是我的领域对象类

class MessageRealm: Object {

dynamic var textDownloadded = String()
dynamic var imageDownloadded = NSData()
dynamic var videoDownloadded = String()
dynamic var voiceDownloadded = String()
dynamic var fromId = String()
dynamic var timeStamp = Date()
dynamic var messageId = NSUUID().uuidString
let userSelect = List<UsersRealm>()
override class func primaryKey() -> String? {
    return "messageId"
}

}

类用户领域:对象{

dynamic var sender = String()
dynamic var fromId = String()
dynamic var toId = String()
dynamic var lastMessage = String()
dynamic var timeStamp = Date()
dynamic var profileImage = NSData()
let msgs = List<MessageRealm>()
override class func primaryKey() -> String {
    return "sender"
}    
}

发送和接收是好的,它保存到领域数据库,但所有任何用户发送的消息我都接收到一个用户我想分开每个用户都有他的发送和接收数据库我在这里错过了一些东西但我不知道我尝试搜索没什么问题,但我无法弄清楚解决方案

对不起我的一周英语 谢谢

【问题讨论】:

  • 您找到解决方案了吗?

标签: swift realm realm-mobile-platform


【解决方案1】:

如果我正确理解了您的情况,您正在为所有用户使用单个领域 url,这就是为什么您的所有客户都拥有相同的数据。您可能应该为对话创建一个单独的领域,并在参与该聊天的用户之间共享它。请在https://realm.io/docs/swift/latest/#access-control 的文档中了解有关共享领域的更多信息。

【讨论】:

    猜你喜欢
    • 2017-03-05
    • 1970-01-01
    • 1970-01-01
    • 2022-06-30
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    相关资源
    最近更新 更多