如何解决Swift:查询时,MongoDB Realm不同步
当我快速查询领域时,我没有在MongoDB集群中获得最新数据。我最初在该领域中拥有大约4000个数据,并且已同步到移动设备,但是当我将数据增加到大约10,000个时,它不会同步最新的数据。应用启动时,我注意到此打印内容。
同步:连接[1]:会话[1]:client_reset_config = false,存在的域= true,异步打开= false,客户端重置= false。
这是我尝试在启动时进行同步的方式
struct AppRootView: View {
@State var homeLink = false // <- add here
@State var loginLink = false
@State private var selection: String? = nil
var body: some View {
NavigationView { // <- wrap in the `NavigationView`
VStack(alignment: .leading) {
Text("App")
.bold()
.font(.largeTitle)
NavigationLink(destination: homeMainView(),tag: "home",selection: $selection) {EmptyView()}
NavigationLink(destination: LoginView(),tag: "login",selection: $selection) {EmptyView()}
}
}
.onAppear(perform: handleSignIn)
.frame(minWidth: 0,maxWidth: .infinity,minHeight: 0,maxHeight: .infinity).background(Color.yellow)
}
func handleSignIn() {
print("HANDLING SIGNING IN")
if let _ = app.currentUser() {
print("USER IS LOGGED IN ALREADY")
self.handleRealmSync()
self.selection = "home" // <- activate the `NavigationLink`
} else {
print("USER NEEDS TO LOGIN")
self.selection = "login"
print("not logged in; present sign in/signup view")
}
}
func handleRealmSync(){
let user = app.currentUser()
let partitionValue = "store=walmart"
Realm.asyncOpen(configuration: user!.configuration(partitionValue: partitionValue),callback: { (maybeRealm,error) in
guard error == nil else {
fatalError("Failed to open realm: \(error!)")
}
guard let realm = maybeRealm else {
fatalError("realm is nil!")
}
// realm opened
print("Realm SYNC IS OPENED")
})
}
}
我得到了打印的“ Realm SYNC IS OPENED”,这让我认为应该是这样
领域存在= true,异步打开= false
似乎有冲突。然后我检查了MongoDB Realm登录同步会话。这是消息
[“会话在收到UNBIND事件后关闭”]
它表明同步未发生。是什么会阻止同步?任何帮助将不胜感激。
解决方法
您可能只需要确保 Realm
没有被取消初始化。
您可以创建一个 @State
属性来存储在回调中收到的 Realm
实例:
@State var realm:Realm?
和
Realm.asyncOpen(configuration: user!.configuration(partitionValue: partitionValue)) { (maybeRealm,error) in
guard error == nil else {
fatalError("Failed to open realm: \(error!)")
}
guard let realm = maybeRealm else {
fatalError("realm is nil!")
}
// realm opened
print("Realm SYNC IS OPENED")
self.realm = maybeRealm
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。