Programmieren mit Swift - Für macOS und iOS
Programmieren mit Swift - Für macOS und iOS
ToDoListAppDelegate

Wenn Sie Ihr Projekt mit Xcode für Snow Leopard erzeugt haben, befindet sich in dem Projekt schon eine Klasse, die als Controller für die Anwendung geeignet ist. Es ist die Klasse ToDoListAppDelegate. Verwenden Sie hingegen noch eine ältere Version, erzeugen Sie eine MyController-Klasse, wie Sie es aus den anderen Lektionen kennen. Diese Klasse ist dann zwar nicht automatisch als Delegate für die Anwendung registriert, das aber können Sie ignorieren, da diese Delegation für das aktuelle Projekt nicht benötigt wird.

Wie auch immer Sie den Controller für die Anwendung erzeugt haben, müssen Sie Ihn noch um drei Dinge erweitern. Das ist zum ersten ein Outlet auf ein NSArrayController. Mit Hilfe eines solchen Objektes werden später die Daten mit der grafischen Oberfläche verbunden.
Des Weiteren benötigen Sie an dieser Stelle zwei Action, um eine neue Aufgabe anzulegen (addNewToDoItem) oder um eine bestehende Aufgabe zu entfernen (removeToDoItem).


ToDoListAppDelegate.h
#import <Cocoa/Cocoa.h>

@interface ToDoListAppDelegate : NSObject {
    NSWindow *window;
    IBOutlet NSArrayController *doToItemsArrayController;
}

- (
IBAction)addNewToDoItem:(id)sender;
- (
IBAction)removeToDoItem:(id)sender;

@property (assign) IBOutlet NSWindow *window;

@end
In der ToDoListAppDelegate.m müssen nun noch die Methoden implementiert werden. Dabei genügt es zunächst nur die addNewToDoItem vollständig umzusetzen. Für einen ersten Test wird es genügen. Kann man erfolgreich Aufgaben hinzufügen, sollte es auch ein Leichtes sein, sie wieder zu entfernen.
#import "ToDoListAppDelegate.h"
#import
"ToDoItem.h"

@implementation ToDoListAppDelegate

@synthesize window;

- (
void)applicationDidFinishLaunching:(NSNotification *)aNotification {
}

- (
IBAction)addNewToDoItem:(id)sender
{
    ToDoItem *newToDo = [[ToDoItem alloc] init];

    [newToDo setIsFinished:false];
    [newToDo setTimestamp:[NSDate date]];
    [newToDo setPriority:[NSNumber numberWithInt:
5]];
    [newToDo setHeadline:
@"Neue Aufgabe"];
    [newToDo setNote:
@"leer"];

    [doToItemsArrayController addObject:newToDo];
}

- (
IBAction)removeToDoItem:(id)sender
{

}

@end
Der Code von addNewToDoItem ist recht überschaubar. Ein ToDoItem-Objekt wird erzeugt und mit Startwerten ausgestattet. Das hätte man auch in die Initialisierung der Klasse selbst programmieren können. Anschliessend wird das Objekt dem ArrayController hinzugefügt. So ein Controller hat, der Namen lässt es erahnen, ein Array, um Daten zu speichern. Das sind bei weitem nicht alle seine Fähigkeiten, aber die
einzige, die an dieser Stelle benötigt wird.

nächste Seite