相关疑难解决方法(0)

SwiftUI - 确保在模型更新时从主线程发布值(通过像 receive(on:) 这样的运算符)

我的应用程序包含一个资源密集型操作,该操作根据从 XML 提要中提取的数据填充数组。我不希望此操作锁定主线程(以及为数组提供新数据时的 UI),因此它是在后台完成的。

let dispatchQueue = DispatchQueue(label: "concurrent.queue", qos: .utility, attributes: .concurrent)

class XMLHandler: ObservableObject {
    let context: NSManagedObjectContext

    @Published var myArray: [CustomObject] = []

    init(context: NSManagedObjectContext) {
        self.context = context
    }
    
    ...some code...
    
    func populateArray {
      dispatchQueue.async {
       ...xml parsing happens...
       (xmlOutputObject) in 
          for x in xmlOutputObject {
              self.myArray.append(x)
          }
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

在其他地方,我的 SwiftUI 视图使用 myArray 来填充它的列表:

struct MyView: View {

 @EnvironmentObject var handler: XMLHandler
    var body: some View {
            List{
                ForEach(handler.myArray) { CustomObject in
              ... generate …
Run Code Online (Sandbox Code Playgroud)

swiftui combine

31
推荐指数
4
解决办法
4万
查看次数

标签 统计

combine ×1

swiftui ×1