【问题标题】:Shared Data Model in SwiftSwift 中的共享数据模型
【发布时间】:2020-08-17 10:15:00
【问题描述】:

ObservableObject 可以在 Swift 中使用吗?我只在 SwiftUI 中看到它的教程。我希望能够通过 API 调用将对象加载到内存中。然后用 VC 去操作它的不同部分,所有后续的 VC 都会响应。

【问题讨论】:

  • ObservableObject 是Combine 的一部分,Combine 是一个基于swift 的框架,因此它可以与任何基于swift 的代码一起使用。

标签: swift mvvm observable viewmodel observableobject


【解决方案1】:

是的,即使您不使用 SwiftUI,也可以使用 ObservableObject。请记住,使用此功能至少需要 iOS 13。

但是,如果您不打算在 SwiftUI 的上下文中使用 ObservableObject,请确保您了解它的工作原理。 ObservableObject 发送更新保存更新值的属性被设置。这是因为对象 发布 使用 objectWillChange 发布者。我指出这一点是因为如果您在已发布的值上使用sink 作为通知您的 VC 新值可用的机制,并且他们通过直接引用已发布的属性来获取该值,他们仍然会获得旧值并且您不会看到屏幕更新为新数据。

在 SwiftUI 中使用 ObservableObject 时,您通常无需担心 objectWillChange 发布者,因为只要该发布者触发,SwiftUI 视图就会自动更新。由于默认情况下常规视图控制器不知道如何在这些发布者触发时更新自己,因此了解如何在使用 ObservableObject 作为数据模型时实现更新非常重要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 2018-04-03
    • 1970-01-01
    • 2021-12-23
    相关资源
    最近更新 更多