Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在Swift中传递领域结果?_Ios_Swift_Realm - Fatal编程技术网

Ios 如何在Swift中传递领域结果?

Ios 如何在Swift中传递领域结果?,ios,swift,realm,Ios,Swift,Realm,我有一个UITableView视图,它查询领域数据库并列出其结果。该查询包含各种筛选器和排序指令 当用户选择一个表条目时,它们将被带到一个详细视图,该视图允许用户向左或向右滑动以查看查询的上一个/下一个结果(与它们在UITableView中显示的顺序相同)。此局部视图是一个单独的ViewController,我当前正在将结果传递给局部视图控制器,以便它可以在其中来回移动 在引入删除项目的功能之前,这种方法非常有效。用户可以删除项目,我说用户是因为其他人可以删除项目,并且删除会传播到所有用户(通过

我有一个UITableView视图,它查询领域数据库并列出其结果。该查询包含各种筛选器和排序指令

当用户选择一个表条目时,它们将被带到一个详细视图,该视图允许用户向左或向右滑动以查看查询的上一个/下一个结果(与它们在UITableView中显示的顺序相同)。此局部视图是一个单独的ViewController,我当前正在将结果传递给局部视图控制器,以便它可以在其中来回移动

在引入删除项目的功能之前,这种方法非常有效。用户可以删除项目,我说用户是因为其他人可以删除项目,并且删除会传播到所有用户(通过互联网)。现在,如果用户已进入详图视图,并且有人远程删除某个项目,则分配给详图视图的结果集现在不一致。它不会得到更新,即使表视图中的原始结果也会得到更新

我怀疑这是因为变量是通过值而不是引用赋值的

在传递领域对象时,建议做的事情是传递ID并再次执行查找,但是当涉及到结果时该怎么做?我是否应该将筛选/排序代码放在UITableViewController和detail controller都可以访问的位置,以便它们都可以单独提取结果?或者,有没有更好的方法让我忽略

如何在Swift中传递领域结果

您可以直接传递
结果
实例。它们通过引用和自动更新传递,如Realm的Swift文档部分所述

您还可以传递表示查询的
NSPredicate
或查询字符串,以避免
结果所固有的线程限制

现在,如果用户已进入详图视图,并且有人远程删除某个项目,则分配给详图视图的结果集现在不一致。它不会得到更新,即使表视图中的原始结果也会得到更新

除非我误读了你的帖子(可能是这样),否则这是不正确的。如果
结果
所在的线程有一个runloop(iOS上的主线程总是这样),并且其父
领域
已启用,则
结果
应始终反映其领域的最新状态,在每次运行循环迭代之间,它将跨线程自动提升到最新状态

如果支持
结果
的查询所引用的某个对象已被删除,则
结果
将为空,相当于其查询被删除时的行为

如果这与您看到的行为不匹配,那么您可能在领域中发现了一个bug,在这种情况下,我鼓励您这样做,以便领域人员可以进行调查