每当我在另一个类中调用方法-(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
答案 0 :(得分:1)
如果数组为空,objectAtIndex:0
将抛出异常。
由于它没有,但返回nil
,您没有数组:您已将objectAtIndex:
消息发送到nil
。
最有可能的是,CheckOut
不是那种由init
初始化其实例的类。检查文档中的超类以查看其指定的初始化程序,然后重写它。