gpt4 book ai didi

ios - Realm Swift 设计模式

转载 作者:行者123 更新时间:2023-11-30 12:42:45 25 4
gpt4 key购买 nike

我目前在我的应用中使用以下流程:

  • UITableViewController:列出行
  • UIViewController:显示单击行的详细信息
  • Realm :保存数据

所以我做的第一件事是查询Realm并填充UITableView
当单击一行时UIViewController用于显示更多详细信息,这些详细信息包含在我之前查询的 Realm 对象中。因此我通过以下方式传递对象

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let destinationVC = segue.destination as! UIViewController
destinationVC.rowData = selectedRowData
}

其中selectedRowData是与所选行对应的Realm Object
现在,UIViewController 允许用户更新一些属性,这些属性必须在保存操作时存储在我的 Realm 实例中。话虽这么说,我不能简单地更新 Realm 对象作为

rowData.myCustomProperty = newCustomPropertyUpdatedByTheUser

否则Realm会抛出异常,说我试图在写入语句之外执行写入。显然我不想此时执行写入,否则如果用户否定该操作(例如通过返回到UITableViewController),我将存储该值,无论如何,这很糟糕。
我想知道在这种情况下使用的最佳解决方案/模式是什么,可以使我尽可能避免复制代码。
我想到的一个解决方案是将值临时存储在某些变量/结构中,然后在单击保存按钮时更新 rowData 。
它有效,但我个人不喜欢这个解决方案,例如如果您更新数据模型,您将必须保持结构一致等,因此如果您有更好的设计模式,请分享。

最佳答案

当您的 View Controller 启动时,启动与 Realm 的事务。如果您希望保存更改,则提交该事务,如果用户返回而不保存,则不要提交事务。

关于ios - Realm Swift 设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42042598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com