Ios 领域设计模式
我当前正在我的应用程序中使用以下流:Ios 领域设计模式,ios,swift,realm,Ios,Swift,Realm,我当前正在我的应用程序中使用以下流: UITableViewController:列出行 aUIViewController:显示单击行的详细信息 领域:保存数据 因此,我要做的第一件事是查询Realm并填充UITableView当单击一行时,将显示UIViewController以显示更多详细信息,这些信息包含在我先前查询的Realm对象中。因此,我以以下方式传递对象 override func prepare(for segue: UIStoryboardSegue, sender: A
- UITableViewController:列出行
- aUIViewController:显示单击行的详细信息
- 领域:保存数据
Realm
并填充UITableView
当单击一行时,将显示
UIViewController
以显示更多详细信息,这些信息包含在我先前查询的Realm对象中。因此,我以以下方式传递对象
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let destinationVC = segue.destination as! UIViewController
destinationVC.rowData = selectedRowData
}
其中,selectedRowData
是与所选行相对应的Realm对象
现在,UIViewController
允许用户更新一些属性,在执行保存操作时,这些属性必须存储在我的Realm
实例中。也就是说,我不能简单地在移动中更新领域对象
rowData.myCustomProperty = newCustomPropertyUpdatedByTheUser
否则,Realm
抛出一个异常,表示我试图在write语句之外执行write。显然,此时我不想执行写入操作,否则,如果用户否定操作(例如,通过返回到UITableViewController
),我将存储该值,这是错误的
我想知道在这种情况下使用什么样的最佳解决方案/模式可以使我尽可能避免代码复制
我想到的一个解决方案是将值临时存储在一些变量/struct中,然后在单击save按钮时更新rowData
它可以工作,但我个人不喜欢此解决方案,例如,如果您更新数据模型,则必须保持结构的一致性等,因此如果您有更好的设计模式,请共享。当您的视图控制器在该点启动时,请与realm启动事务。
如果您希望保存更改,请提交该事务;如果用户返回而不保存,请不要提交该事务。请阅读文档,这正是我要找的,谢谢!