在iOS上处理多帐户的多领域

时间:2018-04-19 07:44:31

标签: ios swift realm

我目前正处理一个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”

所以,我希望你能理解这个问题。我认为这可能是一种“缓存问题”。

感谢您的帮助!

0 个答案:

没有答案