私はポストリクエストであるtaskというclosureを持っていますが、私は値と呼ばれるグローバル変数を持っていて、 "値"の値をデータとして設定しようとしています私は "array"という変数に格納されたデータベースから戻ってきた。既に完了しているtableview.reloadDataの部分については心配しないでください。私はちょうど閉鎖の価値を得る方法を知りたい。クロージャ内の任意の非同期タスクのための変数の値をクロージャスウィフトから得る
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()
私はそれを得ることはありませんあなたはのviewDidLoadで値を取得する方法。何をしたいですか ?クロージャーから「データ」を取り出しますか?何をすべきか ? – Randy
だから私はグローバル変数var値を持っている:NSArray = []と私はここでデータベースからデータを取得配列= tryしよう! NSJSONSerialization.JSONObjectWithData(データ!,オプション:NSJSONReadingOptions.MutableContainers)を! NSArray;そのグローバル変数の値を変数 "array"の値に設定したい –
あなたはすでに 'self.values = array'行を使っています。あなたの問題は何ですか? – dan