gpt4 book ai didi

swift - Alamofire 发出 newwork 请求后如何返回值

转载 作者:行者123 更新时间:2023-11-30 13:53:28 25 4
gpt4 key购买 nike

我希望获得值并返回,但总是返回 null,所以我打印结果

func Getex(word :String){
var temp = WordStruct()
let url = "http://fanyi.youdao.com/openapi.do?keyfrom=hfutedu&key=842883705&type=data&doctype=json&version=1.1&q="+word
Alamofire.request(.GET, url).validate().responseJSON { response in
switch response.result {
case .Success:
if let value = response.result.value {
let json = JSON(value)
temp.word = word
temp.phonetic = json["basic"]["phonetic"].stringValue
for (_,val) in json["basic"]["explains"]{
temp.explains.append(val.string!)
}
//@1print("\(temp)")
}
case .Failure(let error):
print(error)
}
}
//@2 print("\(temp)")
}

在@1处可以获取数据,但在@2处无法获取数据我如何返回温度值

struct WordStruct {
var word: String?
var phonetic:String?
var explains = [String]()
}

最佳答案

Alamofire 请求默认是异步的。因此,当您调用 Alamofire.request 时,运行时会在调用响应 block 之前立即返回。为了检索 WordStruct,您需要向 Getex 方法添加一个完成 block 。

func Getex(word :String, completion: (WordStruct)->())

然后在请求完成 block 中打印 @1 而不是调用

//@1print("\(temp)")
completion(temp)

无论您在何处调用 Getex,您都需要传递一个完成 block ,类似于使用 Alamofire.request 的方式。例如:

Getex("Test") { word in
print(word)
}

关于swift - Alamofire 发出 newwork 请求后如何返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33960322/

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