Ich habe eine TableView, die Daten aus Kerndaten übernehmen.Swift TableView Neue Zeile einfügen
Sobald die Daten gespeichert sind, werden sie als erste Zeile eingefügt.
Hier ist der Code, den ich verwende, um die Daten zu speichern (ich benutze nicht den Abrufcontroller, weil ich keine Daten abrufe, sondern nur sie lade, weil das Datum von einer geladen wird eine zu viele Beziehung)
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)
}
So fragte ich mich, ob es eine Möglichkeit gibt, die Reihe nach Datum geordnet einzufügen. Ich habe sie nach Datum geordnet wie folgt:
var swim: SwimminPool! {
didSet {
myMaterials = (swim.materialsLocal?.allObjects as! [MaterialLocal]).sorted(by: {$0.createdAtLocal! > $1.createdAtLocal!})
}
}
wo aufgestellt ist ein Datum, von dem Benutzer mit einem Datumsauswahl hinzugefügt. Wenn ich die neuen Daten speichere, werden sie offensichtlich in der ersten Zeile angezeigt, aber wenn ich den Controller verlasse und dann wieder reinkomme, werden die Daten entsprechend der Datumsreihenfolge angezeigt.
Gibt es eine Möglichkeit, die Daten sofort nach dem Speichern in der richtigen Reihenfolge zu bestellen?
Vielen Dank.
, warum Sie die Tabellenansicht nicht nachladen kurz nach dem Hinzufügen von Daten. Wie ich verstanden habe, wenn Sie die Ansicht laden, zeigt die Tabellenansicht die Daten nach Datum geordnet an. Anstatt also die Zeile in die Tabellenansicht einzufügen, speichern Sie einfach die Daten in den Kerndaten und laden die Tabellenansicht danach erneut –
Sie wollen diese zwei Zeilen entfernen: MyMaterialsVC.myMaterials.insert (materialLocal, at: 0) MyMaterialsVC.tableView .insertRows (at: [NSIndexPath (Zeile: 0, Abschnitt: 0) als IndexPath], mit: .none) – Marco
Wenn Sie es in den Stammdaten speichern und die Sortierung anwenden, können Sie die Daten direkt danach erneut laden Tabellenansicht, deren Datenquelle Ihre Kerndaten sind. –