gpt4 book ai didi

swift - DispatchQueue.main.async 外的变量为空

转载 作者:行者123 更新时间:2023-11-28 13:41:00 39 4
gpt4 key购买 nike

几天以来我一直试图解决这个错误,但我不明白为什么我一开始会收到这个错误。

请帮忙...

func createData(request:Crudpb_CreateRequest) -> String {
DispatchQueue.main.async {
self.response = try! self.client.create(request)

print("This is response 1: " + self.response.result) // <-------- This is priting the right response
}
print("This is response outside DispatchQueue: " + self.response.result) // <------- This is not printing anyvalue
return self.response.result // <------ This is not
}

enter image description here

最佳答案

您正在异步分派(dispatch)您在创建请求方法中所做的任何工作,因此您的创建数据函数不会等待完成此工作以继续执行,它只是调用它并保持其执行,这就是为什么您的值(value)当您到达“This is response outside DispatchQueue:”声明时,不会被修改。它将在您创建的捕获 block 中进行修改,这就是为什么您需要像他们之前提到的那样创建一个 @escaping 完成 block ,以便仅在您为获取它所做的工作完成时才返回您的值。

func createData(request:Crudpb_CreateRequest, with completion: @escaping (String) -> Void) {
DispatchQueue.main.async {
self.response = try! self.client.create(request)
completion(self.response)
}
}

关于swift - DispatchQueue.main.async 外的变量为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56031243/

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