4

我已经创建了一个 Amazon Web Services EC2 实例并部署了一个带有领域对象服务器的 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 中引用的数据库: 具有到引用领域数据库的同步路径的领域仪表板

在图像中可以看到“默认权限”属性是无访问权限,这是没有创建新任务的原因吗?如果是这样,我该如何更改该权限?如果这不是原因,有人可以帮助我吗?

提前致谢

4

3 回答 3

4

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

为了快速简单地开始这个指向在线服务器而不是本地服务器的领域教程,您必须初始化 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 {的 TaskList ,您可以创建一个并初始化领域。

于 2017-01-30T09:34:51.923 回答
3

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

该教程说以下内容:

首先,请按照入门说明设置 Realm 移动平台并启动 macOS 版本的 RealmTasks。

此外,您尝试在AWS上使用 ROS 尝试本教程。本教程假设在同一台本地机器上运行 ROS。

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

于 2017-01-27T12:33:40.757 回答
0

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

默认情况下,拥有该领域的注册用户对其具有个人权限。如果你没有权限从客户端打开同步的 Realm 也会因为权限不足而失败,所以这不是问题所在。

所以回到你的代码:

try! items.realm?.write { … }

我的猜测是这里的问题是该集合尚未附加到领域,因此items.realm?评估为null. 在这种情况下,不会执行写事务。您可以通过确保将items第一个添加到领域或直接在同步领域上执行写入来解决此问题。

于 2017-01-25T13:16:52.317 回答