我有一個TableView從核心數據中獲取數據。Swift TableView插入新行
在數據保存後,它們將作爲第一行插入。
這裏是我用來保存數據的代碼(我沒有使用獲取控制器,因爲我沒有獲取任何數據,只是加載它們,這是因爲我加載的日期來自一個一對多關係)
swimToConnect.addToMaterialsLocal(materialLocal)
ad.saveContext()
// Adding the new row to update the tableView
let MyMaterialsVC = self.presentingViewController?.presentingViewController?.presentingViewController as! MyMaterialsVC
MyMaterialsVC.myMaterials.insert(materialLocal, at: 0)
MyMaterialsVC.tableView.insertRows(at: [NSIndexPath(row: 0, section: 0) as IndexPath], with: .none)
MyMaterialsVC.dismiss(animated: true, completion: nil)
}
所以我想知道是否有方法插入按日期排序的行。 我已經命令他們按日期,像這樣:
var swim: SwimminPool! {
didSet {
myMaterials = (swim.materialsLocal?.allObjects as! [MaterialLocal]).sorted(by: {$0.createdAtLocal! > $1.createdAtLocal!})
}
}
在哪裏創建是一個日期選擇器,用戶添加的日期。 當我保存新數據顯然他們顯示在第一行,但如果我解僱了控制器,然後回來,然後數據顯示根據日期順序。
有沒有辦法在我保存後立即以正確的順序排列數據?
謝謝。
你爲什麼不重新加載表視圖只是增加了數據之後。正如我在加載視圖時所瞭解的那樣,表視圖按日期排序顯示數據。因此,而不是在表視圖中插入行,只需將數據保存在覈心數據中,然後重新加載表視圖 –
您的意思是刪除這兩行:MyMaterialsVC.myMaterials.insert(materialLocal,位於:0) MyMaterialsVC.tableView .insertRows(在:[NSIndexPath(row:0,section:0)as IndexPath],其中:.none) – Marco
當您將其保存在覈心數據中並應用排序時,在此之後您可以重新加載數據表視圖,其數據源是您的核心數據。 –