gpt4 book ai didi

快速 uploadTaskWithRequest 和 didReceiveData

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

我对 swift 很陌生,我有以下代码

    var data : AnyObject


let dict = jsonObject as NSDictionary
do
{
data = try NSJSONSerialization.dataWithJSONObject(dict, options:.PrettyPrinted)

let strData = NSString(data: data as! NSData, encoding: NSUTF8StringEncoding)! as String

data = strData.dataUsingEncoding(NSUTF8StringEncoding)!


let task = defaultSession.uploadTaskWithRequest(request, fromData: data as? NSData,
completionHandler:
{(data,response,error) in

guard let _:NSData = data, let _:NSURLResponse = response where error == nil
else {
return
}

});

task.resume()

}catch{

return resultJson
}

resultJson 对象返回一个空数组,因为有更多日期需要下载并且需要时间。我想知道我是否可以使用 didReceiveData 选项在下载后返回数据。我在网上搜索代码但找不到任何代码。非常感谢任何有关代码的帮助。

谢谢

最佳答案

您是对的,返回将在上传完成之前运行,因此您不会获得所需的结果。我假设这段代码在一个函数中。您需要更改它以将闭包作为参数。然后,当上传完成时,您可以调用该闭包。像这样的东西:

func doTheUpload(completion completionHandler: ((AnyObject?) -> Void)) {
var data : AnyObject
let dict = jsonObject as NSDictionary
do
{
data = try NSJSONSerialization.dataWithJSONObject(dict, options:.PrettyPrinted)
let strData = NSString(data: data as! NSData, encoding: NSUTF8StringEncoding)! as String
data = strData.dataUsingEncoding(NSUTF8StringEncoding)!
let task = defaultSession.uploadTaskWithRequest(request, fromData: data as? NSData,
completionHandler:
{(data,response,error) in
guard let _:NSData = data, let _:NSURLResponse = response where error == nil
completionhandler(resultJson)
else {
return
}
});
task.resume()
}catch{
// Do something for error
}
}

然后你可以将其称为:

doTheUpload(completion: {
resultJson in
// use the result
})

请注意,我不知道您从哪里获取 resultJson 或它是什么类型,因此您必须进行一些更改。

关于快速 uploadTaskWithRequest 和 didReceiveData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35836466/

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