新领域移动平台通过离线支持进行广告宣传,但是大多数教程都没有显示示例中的工作方式......
例如,在他们的todo应用程序示例中,这是用于连接到服务器数据库的代码
SyncUser.logIn(with: .usernamePassword(username: username, password: password, register: false), server: URL(string: "http://127.0.0.1:9080")!) { user, error in guard let user = user else { fatalError(String(describing: error)) } DispatchQueue.main.async { // Open Realm let configuration = Realm.Configuration( syncConfiguration: SyncConfiguration(user: user, realmURL: URL(string: "realm://127.0.0.1:9080/~/realmtasks")!) ) self.realm = try! Realm(configuration: configuration) // Show initial tasks func updateList() { if self.items.realm == nil, let list = self.realm.objects(TaskList.self).first { self.items = list.items } self.tableView.reloadData() } updateList() // Notify us when Realm changes self.notificationToken = self.realm.addNotificationBlock { _ in updateList() } } }
当用户离线时,返回的user
变量为nil,并且您无法在服务器上使用已配置的域,但代码未显示如何从镜像本地数据库获取同步数据...是否必须手动复制每次用户上线时,从在线数据库到手动创建的本地数据库的项目?
在成功登录(或注册),它在设备的钥匙串中缓存的用户,你可以通过检索currentUser如果您的应用程序支持多用户的财产或或者全部,甚至当你离线也没问题.
请注意,如果您呼叫logout
用户,那么它将从钥匙串中删除,您必须在线并再次登录.