我目前正处理一个Realm问题。
情况如下:
我的应用在本地保存邮件(在Realm中)。因此,您可以与您的朋友交谈,并将消息保存在数据库中。目前,如果您退出帐户并登录其他帐户,则会发现不属于您帐户的邮件,因此我们决定添加多帐户策略。
解决方案:
我们为每个登录的用户创建一个.realm文件,名称如下:
“USER - \(用户id).realm”
UserManagement.swift:
func userDidLogIn() {
guard let currentAccount = currentAccount else { return }
var config = Realm.Configuration()
// Use the default directory, but replace the filename with the username
config.fileURL = config.fileURL!.deletingLastPathComponent().appendingPathComponent("USER-\(currentAccount.id_p).realm")
print("Realm Configuration URL : Changed TO => \(config.fileURL)")
realmDefaultConfiguration = config
// Set this as the configuration used for the default Realm
Realm.Configuration.defaultConfiguration = config
}
RealmMessageService.swift:
func saveMessageToRealm(message: RealmMessage, to convo: RealmConversation) {
print("Realm Configuration URL : \(self.realm.configuration.fileURL?.absoluteString ?? "NO URL FILE FOUND")")
DispatchQueue.main.async {
try! self.realm.write {
convo.messages.append(message)
}
}
}
它工作正常,属于USER-15的消息只显示给用户15,你得到了它。
但是,有一点,Realm没有使用正确的文件。
重现错误的步骤:
1)登录账号15
2)与朋友交谈
3)退出。
控制台输出:
域配置网址:已更改为TO => “USER-15.realm”
域配置URL:“USER-15.realm”
域配置URL:“USER-15.realm”
4)登录账号31 5)和你的朋友谈谈。
CRASH
控制台输出:
域配置网址:已更改为TO => “USER-31.realm”
域配置URL:“USER-15.realm”
域配置URL:“USER-15.realm”
所以,我希望你能理解这个问题。我认为这可能是一种“缓存问题”。
感谢您的帮助!