realm 移动平台,离线时如何连接?
realm mobile platform, how to connect while offline?
新领域移动平台宣传有离线支持,但是大多数教程并没有在示例中说明它是如何工作的...
例如,在他们的todo app example中,这是用于连接服务器数据库的代码
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,无法在服务器上使用配置的realm,但是代码中没有说明如何从镜像本地获取同步数据数据库...每次用户上线时,是否必须手动将项目从在线数据库复制到手动创建的本地数据库?
在您成功登录(或注册)用户后,它会缓存在设备的钥匙串中,即使您处于离线状态,您也可以通过 currentUser property or alternatively if your app supports multiple users all 检索它。
请注意,如果您对某个用户调用 logout
,那么该用户将从钥匙串中删除,您必须在线并重新登录。
新领域移动平台宣传有离线支持,但是大多数教程并没有在示例中说明它是如何工作的...
例如,在他们的todo app example中,这是用于连接服务器数据库的代码
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,无法在服务器上使用配置的realm,但是代码中没有说明如何从镜像本地获取同步数据数据库...每次用户上线时,是否必须手动将项目从在线数据库复制到手动创建的本地数据库?
在您成功登录(或注册)用户后,它会缓存在设备的钥匙串中,即使您处于离线状态,您也可以通过 currentUser property or alternatively if your app supports multiple users all 检索它。
请注意,如果您对某个用户调用 logout
,那么该用户将从钥匙串中删除,您必须在线并重新登录。