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启动事务。
如果您希望保存更改,请提交该事务;如果用户返回而不保存,请不要提交该事务。

请阅读文档,这正是我要找的,谢谢!