我是新手,并没有找到满足我的解决方案。
我有一个应用程序,我可以用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对象类,可以没有持久对象 需要部分更新某些属性 不希望在我的viewcontrollers逻辑中有域代码,只在其管理器中。
答案 0 :(得分:0)
很难在没有任何代码示例的情况下提出建议,但我个人认为没有能力更新模型的各个属性并不是一个好主意。
我认为你有两个选择:
向RealmSingleton
添加一个方法,允许您获取写入上下文(在写入事务中执行块),如:
func updateTour(updateBlock: (Tour) -> Void) {
realm.write {
updateBlock(currentTour)
}
}
...
RealmSingleton.shared.updateTour { tour in
tour.property = value
}
添加便捷方法以更新Tour
对象的各个属性:
RealmSingleton.shared.setTourProperty(value)