调用方法后,数组为空

时间:2010-10-02 23:07:33

标签: objective-c cocoa

每当我在另一个类中调用方法-(void)setArrayCheckOut:(int)num时,数组arrayCheckout为空。在-(IBAction)reloadTable:(id)sender之后调用-(void)setArrayCheckOut:(int)num会导致重新加载表 - (null),0“。

知道出了什么问题吗?

这么久

@implementation CheckOut
-(id)init
{
[super init];
tableCheckOut = [[NSTableView alloc]init];
if (!arrayCheckOut)
{
arrayCheckOut = [[NSMutableArray alloc]init];
[arrayCheckOut addObject:@"-"];
}

return self;
     }
-(void)setArrayCheckOut:(int)num
{

  switch (num) {
 case 170:
 [arrayCheckOut addObject:@"T20, T20, DB"];
 break;
 default:
 [arrayCheckOut addObject:@"-"];
 break;
   }
 NSLog(@"array = %@",[arrayCheckOut objectAtIndex:0]);

[tableCheckOut reloadData];

}


-(IBAction)reloadTable:(id)sender
{
NSLog(@"reload table - %@, %d",[arrayCheckOut objectAtIndex:0],[arrayCheckOut count]);

[tableCheckOut reloadData];
}


- (int)numberOfRowsInTableView:(NSTableView *)tv
{
return [arrayCheckOut count];
}

- (id)tableView:(NSTableView *)tv
objectValueForTableColumn:(NSTableColumn *)tColumn
 row:(int)row
{
NSString *v = [arrayCheckOut objectAtIndex:row];
return v;
}
 @end

1 个答案:

答案 0 :(得分:1)

如果数组为空,objectAtIndex:0将抛出异常。

由于它没有,但返回nil,您没有数组:您已将objectAtIndex:消息发送到nil

最有可能的是,CheckOut不是那种由init初始化其实例的类。检查文档中的超类以查看其指定的初始化程序,然后重写它。