我在整个视图中都将我的 Realm 存储库用作单例类。
我像这样使用回购协议:
var repo = SingletonRepo.shared
单例类:
class SingletonRepo{
static let shared = RealmRepo()
private init() { }
}
在注销和重新登录之前一切正常。领域同步变得不活跃。
发生这种情况,我认为,因为单例不会在重新登录时被重置/销毁。
解决这个问题的最佳方法是什么?销毁或重置回购协议?我应该在哪里做?在登录方法中还是在注销时?
还有我如何在同一个单例类上做到这一点?创建方法重置/删除回购?
一个可能的解决方案是您可以根据登录的用户创建领域回购,我的意思是完全以用户为中心的回购。
喜欢:
class LoginUser {
var realmRepo:RealmRepo = RealmRepo()
}
class RealmRepo {
}
用户登录后创建一个用户实例,例如:let user = LoginUser()
现在访问 RealmRepo 像这样: let repo = user.realmRepo
现在将这个 repo 用于所有目的
当用户注销时,只需将用户设为 nil,例如:user = nil
通过设置 nil 登录用户也将丢弃/销毁你的回购协议
因此,对于每个新用户,将创建 realmRepo 的新实例,并在注销后设置 user=nil repo 将被丢弃。
我希望这样你的同步问题也能得到解决