gpt4 book ai didi

ios - 从闭包中快速获取变量的值

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

所以我有一个名为 task 的闭包,它是一个 post 请求,我有一个名为 values 的全局变量,我试图将“values”的值设置为我从存储在变量中的数据库中检索回来的数据称为“阵”。不要担心 tableview.reloadData 部分,它已经完成了。我只想知道如何从闭包中获取值(value)。

var values:NSArray = []

@IBOutlet weak var Open: UIBarButtonItem!
override func viewDidLoad() {
super.viewDidLoad()


Open.target = self.revealViewController()
Open.action = #selector(SWRevealViewController.revealToggle(_:))
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
get()
print ("values=\(values)")

}
func get(){
let request = NSMutableURLRequest(URL: NSURL(string: "http://www.percyteng.com/orbit/getAllpostsTest.php")!)
request.HTTPMethod = "POST"
let postString = "user=\("ios")"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {

print("error=\(error)")
return
}

print("response = \(response)")

let array = try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSArray

dispatch_async(dispatch_get_main_queue()) { [unowned self] in
self.values = array
print ("error=\(self.values)")
self.tableView?.reloadData();
}
}
task.resume()

最佳答案

在闭包中对任何异步任务使用完成

func get(completion:(value: NSArray) -> Void){

// request part
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
// your serialization code

dispatch_async(dispatch_get_main_queue()) { [unowned self] in
self.values = array

// return value to completion
completion(value: array)

print ("error=\(self.values)")
self.tableView?.reloadData();
}
}
}

改变你在viewdidload中获取值的方式

   get{(value) in
// finish NSURLSession task and everything should be done in this closure
self.values = value
print ("values=\(self.values)")
}

关于ios - 从闭包中快速获取变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38113280/

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