2017-03-30 15 views
0

所以我有一個數組,我將保存我從http請求得到的所有數據和的tableView顯示他們,但似乎的tableView(numberOfRowsInSection)不能識別變化數組因爲計數保持爲0陣列不與的tableView(numberOfRowsInSection)方法連接

class OrdersViewController: UIViewController { 


    @IBOutlet weak var tableView: UITableView! 

    var arr = [[String: AnyObject]]() 
    var selectedIndex = -1 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
     let baseUrl = "my url" 
     let consumer_key = "consumer_key" 
     let consumer_secret = "consumer_key" 
     let url = "\(baseUrl)?consumer_key=\(consumer_key)&consumer_secret=\(consumer_secret)&status=processing" 

     let headers2 = ["Accept": "application/json"] 
     Alamofire.request(url, headers: headers2) 
      .responseJSON { response in 

        self.arr.append(data from request) 

       } 
     } 

     let url2 = "\(baseUrl)?consumer_key=\(consumer_key)&consumer_secret=\(consumer_secret)&status=pending" 
     Alamofire.request(url2, headers: headers2) 
      .responseJSON { response in 

        self.arr.append(data from request) 

        print("arr", self.arr) 
       } 
     } 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{ 
     print("after request", self.arr) 
     return self.arr.count 
    } 
} 
and some other codes... 

我得到從http請求數據成功和它得到我的電話Alamofire更新,但「請求後,」保留打印空數組,我不知道發生了什麼在這。

如果任何人可以拋出任何意見,這將改變我的思維過程,這將不勝感激。

謝謝先進。

回答

1

您需要撥打tableView.reloadData()更改您的self.arr屬性。相應documentation提供進一步的細節:

調用此方法重新加載所有,用於構造表,包括細胞,部分頁眉和頁腳,索引數組等上的數據。爲了提高效率,表格視圖僅重新顯示那些可見的行。

如果你打算在很多地方改變你的self.arr屬性,可以替代地財產觀察員添加到它:

var arr = [[String: AnyObject]]() { 
    didSet { tableView?.reloadData() } 
} 

...所以你不需要複製和 - 同樣的代碼遍佈;-)

+0

裏面viewDidLoad中

dispatch_async(dispatch_get_main_queue()) { self.tableView.reloadData() } 

我把self.tableView.reloadData()append方法後,但它仍然不更新我的數組numberOfRowsInSection函數。其次,現在它給我一個錯誤說'斷言故障 - [UITableView的_configureCellForDisplay:forIndexPath:]'和'終止應用程序由於未捕獲的異常 'NSInternalInconsistencyException',原因:「的UITableView( ckim16

+1

@ ckim16不用擔心,你可能會遇到另一個問題,但不會調用'reloadData()'是絕對的錯誤也是如此。 –

0

我會建議你在一個函數中移動你的請求和響應邏輯,然後調用viewDidAppear而不是的函數,然後調用重新加載你的ta bleview使用reloadData()

0

利用這個代碼,而不是

tableView.reloadData() 
+0

這仍然打印我numberOfRowInSection功能的空數組。 – ckim16

+0

檢查您的控制檯您的數組值顯示爲字符串。直到你的數值顯示在字符串的數組爲空。需要將字符串轉換爲數組,然後你的數組值是不顯示空的。任何問題都會在那裏你可以告訴我控制檯輸出? –