【问题标题】:swift property observer for data processing用于数据处理的 swift 属性观察器
【发布时间】:2022-01-04 06:51:24
【问题描述】:

当data 已更改为处理它时,我如何获得通知?我有一个简单的代码,便于理解我想要什么:

class Data {
    var data: [Int] = [] {
        didSet {
            print("changed")
        }
    }
}

class Process {
    var data: Data
    
    init(data: Data) {
        self.data = data
    }
    
    func processIfChanged() {
        //how to run this code?
    }
}

class Global {
    var data: [Data] = []
    var process: [Process] = []
}

let global = Global()
global.data = [Data()]
global.process = [Process(data: global.data.first!)]

global.data.first!.data.append(1)
global.data.first!.data.append(5)

【问题讨论】:

    标签: swift didset


    【解决方案1】:

    可以使用组合模块试试这个

    import Combine
    
    class Data {
        let subject = CurrentValueSubject<Int, Never>(5)
    
        var data: [Int] = [] {
            didSet {
                print("changed")
                subject.send(1)
            }
        }
    }
    
    class Process {
        var dataSubject: AnyCancellable?
        var data: Data {
            didSet {
                registerObserver()
            }
        }
        
        init(data: Data) {
            self.data = data
            registerObserver()
        }
        
        func registerObserver() {
            dataSubject = data.subject.dropFirst().sink { [unowned self] _ in
                self.processIfChanged()
            }
        }
        
        func processIfChanged() {
            print("how to run this code?")
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-22
      • 2020-08-15
      • 2015-02-02
      • 2017-06-06
      • 1970-01-01
      • 2019-07-31
      • 1970-01-01
      相关资源
      最近更新 更多