gpt4 book ai didi

Swift:AppDelegate 中 AppStart 处的网络请求 - ViewController 中的 CompletionHandler?

转载 作者:行者123 更新时间:2023-11-30 12:47:41 24 4
gpt4 key购买 nike

我的应用程序基于具有 4 个 ViewController 的 TabBarController。所有 4 个都依赖于相同的数据。这就是为什么我想在 AppDelegate 中的应用程序启动时加载数据。

但是,ViewController 如何知道请求已完成?例如,如果出现错误(例如没有互联网连接),我如何将此错误传递给这 4 个 ViewController 中的任何一个以显示警报?

最佳答案

使用NotificationCenter实现(Swift 3代码):

extension Notification.Name {
static var RequestCompleted = Notification.Name(rawValue: "MyRequestIsCompleted")
static var RequestError = Notification.Name(rawValue: "MyRequestError")
}

class DataRequest {

func request() {

// if there is error:
let error = NSError(domain: "Error Sample", code: 0, userInfo: nil)
NotificationCenter.default.post(name: .RequestError, object: error)

// if the request is completed
let data = "your data is here"
NotificationCenter.default.post(name: .RequestCompleted, object: data)

}

}

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

NotificationCenter.default.addObserver(self, selector: #selector(requestCompleted(_:)), name: .RequestCompleted, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(requestError(_:)), name: .RequestError, object: nil)

}

deinit {
NotificationCenter.default.removeObserver(self)
}

func requestCompleted(_ notification: Notification) {
if let obj = notification.object {
print(obj)
}
}

func requestError(_ notification: Notification) {
if let obj = notification.object {
print(obj)
}
}

}

关于Swift:AppDelegate 中 AppStart 处的网络请求 - ViewController 中的 CompletionHandler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41412678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com