尝试使用领域对象服务器教程

Trying to use Realm Object Server Tutorial

我已经创建了一个 Amazon Web Services EC2 实例并部署了一个带有 Realm 对象服务器的 AMI,如其文档所述: https://realm.io/docs/realm-object-server/#install-realm-object-server

安装并创建我的管理员用户后,我已经完成了 iOS 教程:https://realm.io/docs/tutorials/realmtasks/,直到第 7 点,足以创建任务,但是当我在应用程序中添加新任务时,什么都没有发生。调试,我注意到下一句try,没有执行:

let items = self.items
try! items.realm?.write {
                items.insert(Task(value: ["text": text]), at: items.filter("completed = false").count)
            }

项目集合似乎已正确初始化:

在ROS仪表盘中,可以看到Xcode中引用的数据库:

图中可以看到"Default permissions"属性是无法访问,这是没有创建新任务的原因吗?如果是这样,我该如何更改该权限?如果不是这个原因,谁能帮帮我?

提前致谢

此处的默认权限显示是否所有其他用户都可以访问该领域,此处并非如此。我们已经有一个关于澄清这一点的内部问题。

拥有 Realm 的注册用户默认拥有单独的权限。如果您没有权限从客户端打开同步领域也会因为权限不足而失败,所以这不是这里的问题。

所以回到你的代码:

try! items.realm?.write { … }

我的猜测是这里的问题是集合尚未附加到领域,因此 items.realm? 计算为 null。在那种情况下,写交易不会被执行。 您可以通过确保首先将 items 添加到 Realm 或直接在同步 Realm 上执行写入来解决此问题。

您可能忘记先启动 Mac 演示应用程序或使用其他用户登录。本教程假定现有数据将在登录时同步。如果您从未启动过 Mac 应用程序或登录过其他用户,则 items 可能不受 Realm 管理。

教程内容如下:

First, please follow the Get Started instructions to get set up with the Realm Mobile Platform and to launch the macOS version of RealmTasks.

此外,您尝试在 AWS 上使用 ROS 尝试本教程。本教程假定 运行 在同一台本地计算机上安装 ROS。

所以你应该修改Mac应用程序代码连接到AWS,然后运行它同步初始数据。然后 运行 教程 iOS 应用程序。

问题是我没有遵循所有完整的教程,因为我不想使用桌面应用程序,只是移动示例,而是桌面应用程序中的领域初始化对象,所以我从未获得执行操作的有效领域.

为了快速简单地开始使用指向在线服务器而非本地服务器的领域教程,您必须初始化 TaskList 对象并将其添加到 self.realm 设置

            // Show initial tasks
            func updateList() {
                if self.realm.objects(TaskList.self).count == 0 {

                    let list = TaskList()
                    list.id = "000001"
                    list.text = "lista de prueba"

                    // Add to the Realm inside a transaction
                    try! self.realm.write {
                        self.realm.add(list)
                    }

                }
                if self.items.realm == nil, let list = self.realm.objects(TaskList.self).first {
                    self.items = list.items
                }
                self.tableView.reloadData()
            }

检查是否没有 if self.realm.objects(TaskList.self).count == 0 { 的任务列表,您可以创建一个并初始领域。