У меня возникла проблема при попытке использовать NSMutableArray с контроллером NSTableView в моем простом приложении со списком задач. Добавление элементов не работает, а попытка удаления элементов выдает ошибку -[NSCFArray removeObjectAtIndex:]: index (0) beyond bounds (0)
. Кажется, я не могу найти причину моей проблемы, поскольку попытка добавить элемент не возвращает ошибку, а ошибка в удалении одного не приводит к очевидному решению. Мой код выглядит следующим образом:
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
Следует также отметить, что в исходной строке я инициализирую массив отображениями, но не могу удалить его или добавить новые строки.