ViewController 中未召集一些代表

Some delegates are not called in ViewController

我有一个 ViewModel,它有一个具有委托的依赖项。我需要那个委托来连接我的 ViewModel。我有 5 个代表,但其中只有 3 个在工作。我试着重新编码,但没有任何反应。

我有这样的基本协议。

protocol PrayerRepositoryDelegate: class {
    func dataChanged(arr: [Prayer])
}

这个协议在我的依赖中。当我更改数组中的某些内容时,我调用该函数

var filteredPrayerArray: [Prayer] = [] {
    didSet {
        delegate?.dataChanged(arr: filteredPrayerArray)
    }
}

但是我在第一个控制器的 ViewModel 中没有得到任何响应,但在其他 ViewModel 中得到了该响应。所以我假设依赖项中的委托有效。

我像这样连接 init 中的代表

init(dependency: Dependencies) {
    self.dependencies = dependency
    super.init()
    setupDelegations()
}

private func setupDelegations() {
    self.dependencies.prayer.delegate = self
    self.dependencies.popesQuotes.delegate = self
    self.dependencies.photoQuotes.delegate = self
    self.dependencies.divesInMisericordia.delegate = self
    self.dependencies.arcibishop.delegate = self
}

其中 3 个工作正常,但另外 2 个看起来没有连接。如您所见,我将其全部连接起来。 No works delegates表示没有调用delegate的函数。

有人遇到同样的问题吗?

好的。我解决了!我只是像这样将 setupDelegations 放入主线程:

private func setupDelegations() {
    DispatchQueue.main.async {
        self.dependencies.prayer.delegate = self
        self.dependencies.popesQuotes.delegate = self
        self.dependencies.photoQuotes.delegate = self
        self.dependencies.divesInMisericordia.delegate = self
        self.dependencies.arcibishop.delegate = self
   }     
}