2015-05-12 396 views
0

打印控制檯中的數據工作得很好。在viewdidload方法中,數組的數量也很好。但是,如果我使用viewdidload之外的任何代碼,它不工作。我試圖填充每個單元格(航空公司和價格)中的兩個標籤的表,但沒有數據顯示,當我在控制檯arrayOfFlights.price.count(例如)中嘗試出它打印出0,就好像它是空的。爲什麼我的數據沒有在tableview中顯示?

數據:

import Foundation 

class FlightDataModel { 
var airline: String? 
var price: String? 

init(airline: String?, price: String?) { 
    self.airline = airline 
    self.price = price 
} 
} 

controller.swift

import Foundation 
import UIKit 


class FlightsController: UITableViewController, UITableViewDataSource { 


var arrayOfFlights : [FlightDataModel] = [FlightDataModel]() 

var startpoint:String! 
var endpoint:String! 


override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return self.arrayOfFlights.count 

} 


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

    var cell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as myCustomTableViewCell 

    cell.airlineLabel.text = arrayOfFlights[indexPath.row].airline 
    cell.priceLabel.text = arrayOfFlights[indexPath.row].price 

    return cell 


} 



override func viewDidLoad() { 
    super.viewDidLoad() 

    // json request to api 

    let qpxRequest = Router.QPXRequest() 

    request(qpxRequest).responseJSON { (request, response, json, error) -> Void in 

     if json != nil { 
      //insert airline data into arrayOfFlights 
      if let myJSON = json as? [String:AnyObject] { 
       if let trips = myJSON["trips"] as? [String:AnyObject] { 
        if let data = trips["data"] as? [String:AnyObject] { 

         if let carriers = data["carrier"] as? [[String:String]] { 
          for (index, carrierName) in enumerate(carriers) { 

           var myFlight = FlightDataModel(airline: carrierName["name"] as String!, price:nil) 
           self.arrayOfFlights.append(myFlight) 

          } 
         } 
        } 
        if let tripOptions = trips["tripOption"] as? [[String:AnyObject]] { 
         for (index, tripOption) in enumerate(tripOptions) { 

          self.arrayOfFlights[index].price = tripOption["saleTotal"] as String! 

         } 
        } 
       } 
      } 


     } 

    } // end api request 

} //end viewdidload 

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 

} 
+0

您的班級是否設置爲您希望數據顯示的表的數據源? –

回答

2

確保你的類被設置爲您tableView

dataSource並調用該方法tableView.reloadData()當你的數據進行解析。

+0

增加了數據源,現在它工作..這樣一個簡單的解決方案!我感覺很傻。謝謝您的幫助 – topazt

相關問題