gpt4 book ai didi

swift - 具有异步任务的 DispatchGroup

转载 作者:行者123 更新时间:2023-11-28 07:37:55 26 4
gpt4 key购买 nike

enter code here我用调度组尝试了很多东西,但我无法获得稳定的结果。自从我的服务器以来,我使用 Alamofire 获取数据。我在 Helper 类中编写了一个函数,并在 AppDelegate.swift 中使用了这个函数。

我不知道是在 AppDelegate 中调用函数时将调度组放在 so 中,还是仅将调度组放在 Helper Class 中的函数中。

    func alomofireGet(URL: String, onCompletion:@escaping ((JSON) -> Void)) {
// let group = DispatchGroup()
var contentJSON = JSON()
// group.enter()
Alamofire.request(URL, method: .get).responseJSON() { (reponse) in
if reponse.result.isSuccess {
contentJSON = JSON(reponse.result.value!)
} else {
contentJSON = JSON(reponse.result.error!)
}
// group.leave()
}
// group.notify(queue: .main) {
onCompletion(contentJSON)
}

在 App delegate 中,我编写了一个函数来调用我类中的函数。

    func connect() {
let group = DispatchGroup()
let _: Bool = KeychainWrapper.standard.removeObject(forKey: "token")
var token = String()
group.enter()
Helper().alomofireGet(URL: "http://192.168.1.19/app_dev.php/login/app") { contenuJSON in
token = contenuJSON["csrfToken"].stringValue
group.leave()
}
group.notify(queue: .main) {
let _: Bool = KeychainWrapper.standard.set(token, forKey: "token")
let t: String? = KeychainWrapper.standard.string(forKey: "token")
print(t!)
}
}

问题是变量“t”是空的。当我在应用程序委托(delegate)中调用 keychainWrapper 时,钥匙串(keychain)也是空的。

PS:我还有其他任务,我只是减少了我的代码

最佳答案

func alomofireGet(URL: String, onCompletion:@escaping ((JSON) -> Void)) {
// let group = DispatchGroup()
var contentJSON = JSON()
// group.enter()
Alamofire.request(URL, method: .get).responseJSON() { (reponse) in
if reponse.result.isSuccess {
contentJSON = JSON(reponse.result.value!)
} else {
contentJSON = JSON(reponse.result.error!)
}
// group.leave()
}
// group.notify(queue: .main) {// where you call wait()function. This blocks the current thread until the group’s tasks have completed.
onCompletion(contentJSON)
}

关于swift - 具有异步任务的 DispatchGroup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52925623/

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