2016-03-19 5 views
0

Ich habe eine Tabellenansicht, die einen Titel und Untertitel enthält. Und in meiner Tabellenansicht wird der Titel und die Untertitelform meiner JSON-Daten angezeigt.Wie bekomme ich Titel in meinen JSON-Daten, die in meiner Tabellenansicht angezeigt werden

Es hat auch eine Bezeichnung namens resultcount, die die Anzahl der Titel in diesem Etikett anzeigen wird. Aber jetzt zeigt es 0, obwohl meine Daten in der Tabellenansicht angezeigt werden.

Hier mein Code:

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" 

Aber seine zeigt 0.

Antwort

1

Wenn Ihre Ansicht dann geladen setzen Sie Resultcount.text = "\(arrDict.count) Results". Aber deine Daten werden immer noch nicht heruntergeladen.

Aber wenn Ihr Download abgeschlossen ist, dann haben Sie den Etikettentext nicht aktualisiert. Deshalb wird der aktualisierte Wert nicht angezeigt. Aktualisieren Sie den Etikettentext, wenn der Download abgeschlossen ist.

Setzen Sie diese Resultcount.text = "\(arrDict.count) Results" unter der dispatch_async(dispatch_get_main_queue()) in Ihrer jsonParsingFromUR Methode.

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() 
    } 
Verwandte Themen