シンプルなToDoリストアプリケーションでNSMutableArrayをNSTableViewコントローラで使用しようとすると問題が発生します。アイテムを追加しても機能しないので、アイテムを削除しようとするとエラー-[NSCFArray removeObjectAtIndex:]: index (0) beyond bounds (0)
が表示されます。アイテムを追加しようとするとエラーが返されず、削除する際のエラーが明白な解決策にならないため、私の問題の原因を見つけることができないようです。私のコードは次の通りである:NSTableView(Cocoa)でNSMutableArrayを使用する際に問題が発生する
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
私はまた、最初の文字列は、私はディスプレイの配列を初期化することに注意する必要がありますが、私はそれを削除することはできません新しい文字列を追加することができます。
呼び出しコードを表示します。テーブルビューをそれに平行して更新しますか? – Eiko