Ich suche nach einem ähnlichen Szenario, aber ich kann nichts finden, das alle Funktionen enthält, die ich brauche. Als ich mich umschaute, schrieb ich die Implementierung der Methode moveRowAtIndexPath wie folgt, aber ich habe ein Problem mit dem Ändern der Referenz auf die Coredata-Objekte, wenn ich also done nothing drücke, wird nichts auf Coredata gespeichert.UITableView CoreData Bestellung mit Abschnitten
override func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath) {
userDrivenDataModelChange = true;
if (sourceIndexPath == destinationIndexPath) {
return
}
let rooms = fetchedResultsController.sections!
let sourceRoom = rooms[sourceIndexPath.section]
let destinationRoom = rooms[destinationIndexPath.section]
var sourceLights = sourceRoom.objects as! [Light]
var destinationLights = destinationRoom.objects as! [Light]
let light = sourceLights[sourceIndexPath.row]
sourceLights.removeAtIndex(sourceIndexPath.row)
destinationLights.insert(light, atIndex: destinationIndexPath.row)
(destinationLights as NSArray).enumerateObjectsUsingBlock({ object, index, stop in
let light = object as! Light
light.position = index
})
tableView.reloadData()
Utils.saveContext(getAppDelegate().context)
userDrivenDataModelChange = false;
}
Guter Tipp über das Erhalten des hellen Gegenstandes. Aber über die Bestellung geschieht dies bereits über die enumerateObjectsUsingBlock Methode, aber die Änderung beibehalten wird nicht irgendwie zu Coredata, ist vielleicht, dass das Objekt von Coredata gelöst ist, und wenn ja - wie es zu lösen? – DeejonZ
Dieser Code gehört nicht in einen View-Controller. Sie sollten meiner Empfehlung folgen. – Mundi
ok, hast du ein beispiel? Ich verstehe immer noch nicht, wie ich meinen Code zum Laufen bringen kann. – DeejonZ