这个用于发送消息并将其保存到 realm db
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)
})
这是我的 Realm 对象类
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"
}
}
类 UsersRealm:对象 {
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"
}
}
发送和接收是可以的并且它保存到 Realm 数据库但是所有任何用户发送的消息我在一个用户中收到我想分开每个用户都有他的发送和接收数据库我在这里遗漏了一些东西但我不知道我尝试搜索没什么长问题,但我想不出解决方案
对不起我的一周英语 谢谢
最佳答案
如果我对您的情况的理解正确,那么您正在为所有用户使用单一 Realm url,这就是为什么您的所有客户都具有相同数据的原因。您可能应该为对话创建一个单独的 Realm ,并在参与该聊天的用户之间共享它。请在我们的文档中了解更多关于共享 Realm 的信息:https://realm.io/docs/swift/latest/#access-control .
关于swift - 在 Chat App 中为每个用户创建 Realm DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44052285/