後,我知道almofire作品在後臺線程,所以我把我的主類SWIFT 2的UITableView刷新Almofire
let nc = NSNotificationCenter.defaultCenter()
nc.addObserver(self, selector: "taskdataReadyFunc", name: "taskdataReady", object: nil)
,並在almofire結束後,我的數據類:
init() {
Alamofire.request(.GET, urlString, parameters: parameters).responseJSON { response in
if response.result.isSuccess {
let json = JSON(response.result.value!)
let data = json.arrayValue
self.tasks = data
print(self.tasks)
}
// print(self.tasks)
print(String(self.tasks.count)+"before nc")
let nc = NSNotificationCenter.defaultCenter()
nc.postNotificationName("taskdataReady", object: nil)
}
那導致泰德功能:
func taskdataReadyFunc(){
tableView.reloadData()
print("reload mision table" + String(taskDataClass.sharedInstance.tasks.count))
}
這工作得很好,當我開始首次應用。 我的問題是我做了一個新的任務,添加一個新的任務到數據庫,然後嘗試再次運行dataClass的init。在那個階段,我可以看到來自數據庫的新任務,但它不會使表重新載入數據(如果我關閉並打開應用程序,我會看到它) 如何刷新我的表視圖或關閉並打開控制器從一開始?
通知不會自動轉到主線程。嘗試將'postNotificationName'或'reloadData'明確地分派給主線程/隊列。 –
我試過了。奇怪的是,如果我在數據類中打印task.count我得到正確的數字,然後我去了NC函數和pront sharedInstance.tasks.count我得到舊號碼。它就像任務的sharedInstance不更新一樣。它是可行的嗎? –
當你改變'self.tasks' **和**移到主隊列時發送通知。 –