2016-06-22 4 views
1

nilを取得しますが、私はdispatch_asyncでそれを実行すると、それはあなたがメインスレッドでself.dataを変更する必要がありtableViews機能numberOfRowsInSectionアレイは、GCD

dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0)) { 
    self.data = self.dataOfJson("http://192.168.1.100/practice/studentCourseSelection.php?ID=\(NSUserDefaults.standardUserDefaults().objectForKey("currentUser")!)") 
    self.RefreshTableView() 
} 

func RefreshTableView() 
{ 
    dispatch_async(dispatch_get_main_queue()){ 
     self.tableView.reloadData() 
    } 
} 
func dataOfJson(url:String) -> NSArray 
{ 
    var jsonArray : NSMutableArray = [] 

    let data = NSData(contentsOfURL: NSURL(string : url)!) 
    jsonArray = try! NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as! NSMutableArray 



    return jsonArray 
} 

enter image description here

+0

「return self.data.count」を「return self.data.count ??」に変更できます。 0' –

+0

コードを表示してください! 'self.dataOfJson'とは何ですか?あなたのコードは 'numberOfRowsInSection'と他の2つの大きな質問をどのように実装していますか? – matt

+0

self.dataがnilの場合、countをnilにするとEXC_BAD_INSTRUCTION RED ERRORが発生します。あなたはチェックする必要はありませんそれは無し – Cruz

答えて

2

でエラーを取得します。

dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0)) { 
    let data = self.dataOfJson("http://192.168.1.100/practice/studentCourseSelection.php?ID=\(NSUserDefaults.standardUserDefaults().objectForKey("currentUser")!)") 
    self.RefreshTableView(data)  
} 

func RefreshTableView(data: ??) { 
    dispatch_async(dispatch_get_main_queue()){ 
     self.data = data 
     self.tableView.reloadData() 
    } 
} 
+0

まだ動作していません:/ –

+0

ありがとうございました..私はいくつかの変更を加えました..しかし、ありがとう –