【问题标题】:Realm slow on updating multiple objects更新多个对象的领域很慢
【发布时间】:2015-10-31 12:40:45
【问题描述】:

在我的应用中,用户可以在集合视图中选择多个联系人。当他选择属性“isSelected”时,我会将其设置为 true,并且 collectionview 会刷新选定的单元格。在这里,我可以识别出选择和单元格突出显示之间的小延迟。但在下一步中,我使用选定的联系人创建了一个组,最后我将属性“isSelected”设置为 false。对于 50 个对象(5 秒),这需要不可接受的时间,需要进行调整。

这是我取消选择所有选定联系人的代码:

for contact in self.selectedContacts {
            try! self.realm.write{
                contact.isSelected = false;
                self.realm.add(contact, update: true)
            }
        }

是否可以一次执行批量更新?

【问题讨论】:

    标签: ios swift realm


    【解决方案1】:

    尝试将 for 循环放在写入块中:

    try! self.realm.write {
        for contact in self.selectedContacts {
            contact.isSelected = false;
            self.realm.add(contact, update: true)
        }
    }
    

    【讨论】:

    • 就是这样,谢谢!您将如何实现选择以减少突出显示延迟?
    • 如果没有看到实际代码,这很难说。也许您可以为此提出另一个问题(无论如何这是一个不同的话题)?
    • 在 .write 中移动 .for 循环,可以更快地完成这项工作。但是我的领域文件从 2.9mb 增加到了 75.5mb。我根本没有改变任何东西。任何提示为什么会发生这种情况?
    • @Cilas 没有看到你的代码 ;-) 你能为此创建一个新问题(包括相关代码)吗?
    【解决方案2】:

    您应该在写入块之外添加切换选择逻辑。用于加快 Realm 更新过程。

        for contact in self.selectedContacts {
            contact.isSelected = false;
        }
        try! self.realm.write{
            self.realm.add(self.selectedContacts, update: true)
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多