首页 文章

处理非持久属性的最佳实践,频繁更新

提问于
浏览
1

我是新手,并没有找到满足我的解决方案 .

我有一个应用程序,我可以用gps数据记录游览等等 . (有多个不同的对象存储在领域中) . 我创建了一个领域单例,它应该为我的对象执行所有我的领域(更新,创建,删除) .

现在我遇到了以下问题:我开始游览并记录下来 . 首先它被创建,一切都很好 . 然后我来到了我必须更新我的旅游对象和只有几个属性(基本上每个新的GPS点更新它)的点 . 另一个要求是,可以存在属性,这些属性在领域中不是持久的,并且仅在对象实例上 .

所以我现在可以选择调用realm.add(object,update:true)来覆盖所有属性 . 我不能说object.prop1 = asdf,object.pro2 = 345,因为我的逻辑层没有写上下文 . 所以我可以在realm.create(type,updatedict,update:true)中更新,但这种方法的重大缺点是,我必须再次重新获取对象以“知道”对象实例上的更改 .

因此,更新对象的某些属性会导致:创建具有id(主键)的字典和用于更改我的域单例上的调用更新并传递所有必需数据的属性 . 在我的realm实例上调用fetch以再次获取新对象,这导致我松散现有的不持久属性值 .

我怀疑我是第一个有这样一个要求,但我找不到解决方案:

简介:Realm Singleton类处理写入上下文中的所有Realm操作不同的Realm Object类可以没有持久对象需要对某些属性进行部分更新,不希望在我的viewcontrollers逻辑中有域代码,只在其管理器中 .

1 回答

  • 0

    没有任何代码示例很难提出建议,但我个人认为没有能力更新模型的各个属性并不是一个好主意 .

    我想你有两个选择:

    • RealmSingleton 添加一个方法,允许您获取写入上下文(在写入事务中执行块),如:
    func updateTour(updateBlock: (Tour) -> Void) {
        realm.write {
            updateBlock(currentTour)
        }
    }
    
    ...
    
    RealmSingleton.shared.updateTour { tour in
        tour.property = value
    }
    
    • 添加便捷方法以更新 Tour 对象的各个属性:
    RealmSingleton.shared.setTourProperty(value)
    

相关问题