Swift 单例模式下的视图关系
Swift 单例模式下的视图关系

Swift 单例模式下的视图关系

在Swift中,使用单例模式的情况下,即使类遵循ObservableObject以及参数的属性包装器为@Published,如果视图中没有使用@StateObject或@ObservedObject来观察它,视图就不会更新。

// 汇率类
class ExchangeRate:ObservableObject {
    // 汇率单例模式
    static var ExchangeRateExamples = ExchangeRate()
    // 汇率信息结构
    @Published var ExchangeRateStructInfo = ExchangeRateStruct(
        ...
    )
}

例如上图代码部分,一个汇率类使用单例模式。

struct HomeView: View {
    var body: some View {
        ...
    }
}

但是视图部分并没有通过@StateObject或@ObservedObject来观察它。

就会导致,只能通过单例模式来获取部分默认信息,但实际的异步方法的调取和返回信息都不会同步到视图。

就像单例模式的方法只在幕后工作,舞台上的人如果没有耳返的话,就不知道幕后的情况。

因此,应该给View视图带一个“耳返”,这样单例数据更新时,前台才会同步。

struct HomeView: View {
    @StateObject private var exchangeRate = ExchangeRate.ExchangeRateExamples
    var body: some View {
        ...
    }
}

这样单例的数据就会被View观察并进行同步。

在使用单例模式的时候,要注意视图需要通过@StateObject或@ObservedObject观察单例模式的数据更新情况。

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注