首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@ObservedObject不更新

@ObservedObject不更新
EN

Stack Overflow用户
提问于 2020-05-15 10:16:49
回答 1查看 64关注 0票数 1

我试图用一个简单的可观察模式来更新视图,但由于某种原因,它不会发生。发布服务器得到更新,但订阅服务器没有更新。我已经简化为下面的代码。单击Add按钮时,视图和变量都不会更新。

我使用这个函数(NetworkManager.shared.saveNew()),因为我在CloudKit通知之后进行更新。如果你知道解决办法,我会很高兴知道的!

代码语言:javascript
复制
import SwiftUI
import Combine

public class NetworkManager: ObservableObject {
    static let shared = NetworkManager()

    @Published var list = [DataSource]()

    init() {
        self.list = [DataSource(id: "Hello", action: [1], link: "http://hello.com", year: 2020)]
    }

    func saveNew(item: DataSource) {
        self.list.append(item)

    }
}

struct DataSource: Identifiable, Codable {

    var id: String
    var action: [Int]
    var link: String
    var year: Int

    init(id: String, action: [Int], link: String, year: Int) {
        self.id = id
        self.action = action
        self.link = link
        self.year = year
    }
}


struct ContentView: View {

    @ObservedObject var list = NetworkManager()

    var body: some View {
        VStack {
            Button("Add") {
                NetworkManager.shared.saveNew(item: DataSource(id: "GoodBye", action: [1], link: "http://goodbye", year: 2030))

            }
            List(list.list, id:\.id) { item in
                Text(item.id)
            }
        }

    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-15 10:21:38

应该使用相同的NetworkManager实例,因此这里是固定的变体(最好将管理器命名为manager,而不是list)。

代码语言:javascript
复制
struct ContentView: View {

    @ObservedObject var manager = NetworkManager.shared // << fix !!

    var body: some View {
        VStack {
            Button("Add") {
                self.manager.saveNew(item: DataSource(id: "GoodBye", action: [1], link: "http://goodbye", year: 2030))

            }
            List(manager.list, id:\.id) { item in
                Text(item.id)
            }
        }

    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61816898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档