2016-03-19 49 views
0

我有一個表格視圖,其中包含一些標題和子標題。在我的表格視圖中,它將顯示標題和字幕形式我的JSON數據。如何獲取我的json數據中的標題數,這些數據顯示在我的表格視圖中

它也有一個名爲resultcount的標籤,它將顯示該標籤中的標題數量。但現在它顯示0,儘管我的數據顯示在表格視圖中。

這裏我的代碼:

var arrDict :NSMutableArray=[] 
override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    let nib = UINib(nibName:"customCell", bundle: nil) 

    tableView.registerNib(nib, forCellReuseIdentifier: "cell") 
    Resultcount.text = "\(arrDict.count) Results" 
    self.jsonParsingFromURL() 
} 

func jsonParsingFromURL() { 
    let url = NSURL(string: "url") 
    let session = NSURLSession.sharedSession() 

    let request = NSURLRequest(URL: url!) 
    let dataTask = session.dataTaskWithRequest(request) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in 
     print("done, error: \(error)") 

     if error == nil 
     { 
      dispatch_async(dispatch_get_main_queue()){ 
       self.arrDict=(try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)) as! NSMutableArray 

       print(self.arrDict) 
       if (self.arrDict.count>0) 
       { 
        self.tableView.reloadData() 
       } 
       // arrDict.addObject((dict.valueForKey("xxxx") 
      } 


     } 
     dataTask.resume() 


    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 


     let cell:customCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as! customCell 


     cell.vendorName.text = tableData[indexPath.section] 
     cell.vendorAddress.text = tableAdd[indexPath.section] 





     cell.vendorName.text=arrDict[indexPath.row] .valueForKey("name") as? String 
     cell.vendorAddress.text=arrDict[indexPath.row] .valueForKey("address") as? String 



     return cell 


    } 

} 

my `resultCount` label code is : 
Resultcount.text = "\(arrDict.count) Results" 

但其顯示爲0。

回答

1

當你的看法加載然後設置Resultcount.text = "\(arrDict.count) Results"。但是你的數據還沒有下載。

但是,當您的下載完成後,您沒有更新標籤文本。這就是爲什麼更新的值不顯示。因此,下載完成後更新標籤文本。

jsonParsingFromUR方法中將此Resultcount.text = "\(arrDict.count) Results"置於dispatch_async(dispatch_get_main_queue())之下。

func jsonParsingFromURL() { 
    let url = NSURL(string: "some url") 
    let session = NSURLSession.sharedSession() 
    let request = NSURLRequest(URL: url!) 
    let dataTask = session.dataTaskWithRequest(request) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in 

     print("done, error: \(error)") 

     if error == nil{ 
     dispatch_async(dispatch_get_main_queue()){ 
      self.arrDict=(try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)) as! NSMutableArray 

      print(self.arrDict) 

      if (self.arrDict.count>0){ 
      Resultcount.text = "\(arrDict.count) Results" 
      self.tableView.reloadData() 
      } 

     } 

     // arrDict.addObject((dict.valueForKey("xxxx") 
     } 

    } 
    dataTask.resume() 
    } 
相關問題