Swift protocol method is not being called by the delegate

Viewed 4952

For some reason the delegate method is not being called in the main View Controller. I was looking for another answers here, but non of them were helpful for me. Am I missing something here? (I shortened my original code for simplicity sake)

Main View Controller:

class VC: ParserDelegate {
    var dataSource = Parser()

    override func viewDidLoad() {
        super.viewDidLoad()

        dataSource.delegate = self
        dataSourse.loadAndParse()
    }

    func didReceiveDataUpdates(store: [WeatherModel]) {
        print("Delegate method triggered.")
    }

}

Protocol:

protocol ParserDelegate: class {
    func didReceiveDataUpdates(store: [WeatherModel])
}

My delegate class:

class Parser {
    weak var delegate: ParserDelegate?

    func loadAndParse() {
        var store = [WeatherModel]()
        // Doing something

        delegate?.didReceiveDataUpdates(store: store)
    }
}
2 Answers

You can also edit this line:

from:

dataSource.delegate = self
dataSourse.loadAndParse()

to:

dataSource.delegate = self
dataSource.loadAndParse()
Related