2016-03-19 9 views
0

私はいくつかのタイトルとサブタイトルを含む1つのテーブルビューを持っています。私のテーブルビューでは、タイトルとサブタイトルが私のjsonデータを表示します。私のテーブルビューに表示されている私のjsonデータのタイトル数を取得する方法

resultcountというラベルが1つあり、そのラベルにはタイトルの数が表示されます。しかし、私のデータはテーブルビューで表示されていますが、現在は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" 

しかし、あなたのビューでは、あなたがResultcount.text = "\(arrDict.count) Results"を設定ロードされると、そのは0

答えて

1

を示します。しかし、あなたのデータはまだダウンロードされていません。

しかし、ダウンロードが完了したら、ラベルのテキストは更新されませんでした。更新された値が表示されない理由ダウンロードが完了したら、ラベルテキストを更新してください。

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() 
    } 
関連する問題