未调用UI更新委托方法

Working on a practice project (solution found here: https://github.com/appbrewery/ByteCoin-iOS13-Completed) where you swipe with a picker view to see the value of 1 Bitcoin in the selected currency.

现在,我已经成功地从coinapi.io检索并解析了数据,但是我用来更新文本标签的委托方法没有激活,我什至不知道为什么,甚至无法将其与解决方案代码进行比较。我没有收到任何错误,并且运行正常,但是此更新方法未调用。为什么不?

ViewController.swift

// CoinManager Delegate Extension Functionality
extension ViewController: CoinManagerDelegate {
    func didUpdateCoin(currency: String, value: String) {
        // Test to see if it's being called
        print("didUpdateCoin Called")
        DispatchQueue.main.async {
            // Change the information presented to the user
            self.currencyLabel.text = currency
            self.bitcoinLabel.text = String(value)
        }
    }

    // If it fails, print the error that occurred
    func didFailWithError(error: Error) {
        print(error)
    }

}

这就是我所说的。

CoinManager.swift

var delegate: CoinManagerDelegate?

func performRequest(with urlString: String, currency: String) {
        // If the url is valid
        if let url = URL(string: urlString) {
            // Create the URLSession to request the data
            let session = URLSession(configuration: .default)
            // Create the task and session with the url
            let task = session.dataTask(with: url) { (data, response, error) in
                // If there's an error
                if error != nil {
                    // Call the error-handling function
                    self.delegate?.didFailWithError(error: error!)
                    // Return without any request being performed
                    return
                }
                // If the data is retrieved successfully
                if let safeData = data {
                    // Parse the data
                    if let value = self.parseJSON(safeData) {
                        print("Got to just before didUpdateCoin")
                        // The value is being passed correctly
                        print(value)
                        // Not calling, just skipping passed didUpdateCoin
                        self.delegate?.didUpdateCoin(currency: currency, value: value)
                        print("Passed didUpdateCoin")
                    }
                }
            }
            // Continue running
            task.resume()
        }
    }

输出量

在didUpdateCoin之前

9768.79

通过didUpdateCoin

评论