[英]Swift/iOS - Sharing Model State between View Controllers
我有一个关于在View Controller之间共享模型状态的问题。
让我们举个例子:Twitter应用程序。 在时间轴提要中,您会看到状态列表,这些状态是从API加载的,序列化为模型的状态。 在提要Feed中,您还可以找到状态列表。 它们也从API加载,序列化为模型,但序列化为不同的实例。 如果用户点击提及提要中的“心脏”按钮,则它也应在时间轴提要中显示为喜欢的推文。 但这意味着共享代表相同状态更新的两个不同模型实例的状态。
解决此不一致状态的方法是使用状态的“缓存”。 我将其作为静态属性放在状态模型中,如下所示:
static var cache: Array<Status> = Array<Status>()
并使用辅助方法始终为每个帖子使用单个实例,无论从哪个视图控制器加载/修改它们。
那是反模式吗? 有更好的方法吗?
如果我没有误会Twitter使用Firebase,那么自动更新仅要感谢实时观察数据库。 您可能应该考虑观察对象的变化,并适当地更新视图所基于的集合。 我不知道您的确切架构。
只是先改一下。
用户在视图控制器A中修改Y,但视图控制器B不显示更新。
当然,还有其他选项,例如发送通知,以便其他视图控制器知道刷新数据。
我不认为您应该坚持保持不同实例同步。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.