【问题标题】:realm mobile platform, how to connect while offline?Realm移动平台,离线时如何连接?
【发布时间】:2017-01-16 08:55:23
【问题描述】:

宣传新领域移动平台提供离线支持,但大多数教程并未在示例中展示其工作原理...

例如,在他们的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,但是代码没有显示如何从镜像本地数据库中获取同步数据...每次用户上网时,您是否必须手动将在线数据库中的项目复制到手动创建的本地数据库中?

【问题讨论】:

    标签: swift realm realm-mobile-platform


    【解决方案1】:

    在您成功登录(或注册)用户后,它会缓存在设备的钥匙串中,您可以通过 currentUser 属性检索它,或者如果您的应用支持多个用户 all,即使您处于离线状态。

    请注意,如果您在某个用户上调用logout,那么它将从钥匙串中删除,您必须在线并重新登录。

    【讨论】:

    • 您知道在第一次没有实际建立连接/记录的情况下执行此操作的好方法吗?例如,如果您保证应用程序是最新的并且没有架构更改?一种方法是创建一个本地领域,然后在建立同步后复制所有数据,但这似乎很困难,并且有点违背了首先使用领域进行离线的目的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多