Ich habe ein Problem, ein NSMutableArray mit einem NSTableView-Controller in meiner einfachen ToDo-Liste Anwendung zu verwenden. Hinzufügen von Elementen funktioniert nicht und versuchen, Elemente zu löschen gibt mir den Fehler -[NSCFArray removeObjectAtIndex:]: index (0) beyond bounds (0)
. Ich kann nicht die Ursache meines Problems finden, da der Versuch, ein Element hinzuzufügen, keinen Fehler zurückgibt und der Fehler beim Entfernen eines Elements zu keiner offensichtlichen Lösung führt. Mein Code ist wie folgt:Probleme mit NSMutableArray mit NSTableView (Cocoa)
AppController.h
//
// AppController.h
// ToDo
//
// Created by Rhys Powell on 10/01/11.
//
#import <Cocoa/Cocoa.h>
#import <BWToolkitFramework/BWToolkitFramework.h>
@interface AppController : NSObject {
IBOutlet BWAnchoredButton *addButton;
IBOutlet BWAnchoredButton *removeButton;
IBOutlet NSMenuItem *clearAll;
IBOutlet NSTableView *tableView;
NSMutableArray *toDoList;
}
- (IBAction)addToDo:(id)sender;
- (IBAction)removeToDo:(id)sender;
- (IBAction)clearAllToDos:(id)sender;
@end
AppController.m
//
// AppController.m
// ToDo
//
// Created by Rhys Powell on 10/01/11.
//
#import "AppController.h"
@implementation AppController
- (id)init
{
[super init];
NSLog(@"Initialising...");
toDoList = [[NSMutableArray arrayWithObject:@"Add a ToDo with the '+' button"] retain];
return self;
}
- (IBAction)addToDo:(id)sender
{
NSLog(@"Added a ToDo");
[toDoList addObject:@"Test"];
}
- (IBAction)removeToDo:(id)sender
{
[toDoList removeObjectAtIndex:[tableView selectedRow]];
}
- (IBAction)clearAllToDos:(id)sender
{
[toDoList removeAllObjects];
}
- (int)numberOfRowsInTableView:(NSTableView *)tv
{
return [toDoList count];
}
- (id)tableView:(NSTableView *)tv objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row
{
return [toDoList objectAtIndex:row];
}
@end
Ich sollte auch beachten, dass die ursprüngliche Zeichenfolge ich das Array mit Displays zu initialisieren, aber ich kann es nicht löschen oder füge neue Zeichenfolgen hinzu.
Den Anrufcode anzeigen. Aktualisieren Sie die Tabellenansicht parallel dazu? – Eiko