Programmieren mit Swift - Für macOS und iOS
Programmieren mit Swift - Für macOS und iOS
Entfernen von Aufgaben

Nachdem das Hinzufügen und das Bearbeiten von Aufgaben jetzt problemlos funktioniert, ist es an der Zeit sich mit dem Löschen von Aufgaben zu beschäftigen. Das ist keine sehr schwierige Aufgabe, sie kann sogar auf verschiedene Wege erreicht werden.

Der einfachste Weg, ein Objekt aus dem ArrayController zu löschen, ist die Verwendung einer Action des Controllers selbst. Wie im Connections Inspector sehr gut sichtbar ist, verfügt der NSArrayController über einige Action, von denen eine Remove ist. Wird diese Action mit dem bisher unbenutzten Button verbunden, wird bei jedem Klick aus aktuell ausgewählte Objekt entfernt.
stacks_image_E04F6431-B786-469A-BBF8-79ED30ED2175
Es gibt zwei Ansätze die ausgewählten Objekte zu entfernen, der erste Weg besteht darin, sich ein Array der markierten Objekte zu holen und dieses an die reomveObject-Methode des Controllers zu senden.
NSArray *items = [doToItemsArrayController selectedObjects];
[doToItemsArrayController removeObject:items];
Möchte man nicht mit den Objekten selbst arbeiten, bleibt immer noch die Möglichkeit mit einem IndexSet der gewählte Objekte zu arbeiten. Ein IndexSet ist eine Auflistung von Zahlen, in diesem Fall eine Liste der markierten Positionen.
NSIndexSet *iSet = [doToItemsArrayController selectionIndexes];
[doToItemsArrayController removeObjectsAtArrangedObjectIndexes:iSet];
Eine Anweisung, die man in beiden Fällen vorher ausführen sollte, ist:
[window endEditingFor:nil];
Dadurch wird die aktuelle Eingabe beendet und die Daten im Controller gespeichert. Möchte man das Objekt nur löschen, ist es wahrscheinlich nicht nötig, aber wenn mit der Aufgabe zuvor noch andere Dinge geschehen sollen, ist es immer besser, die Werte vorher abzugleichen.