后阵列为空每当我调用另一个类中的方法-(void)setArrayCheckOut:(int)num
时,数组arrayCheckout
为空。在-(void)setArrayCheckOut:(int)num
之后调用-(IBAction)reloadTable:(id)sender
“导致重载表 - (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
arrayCheckOut在哪里定义?显示代码。 – 2010-10-02 23:23:48
没有,因为我不需要它。该数组将只能被应用程序读取并完全删除,然后再填充它。 – lueda 2010-10-02 23:29:44
'setArrayCheckOut:'的问题包括一个幻数(170),魔术和非本地化的字符串文字,使用'int',其中'NSInteger'或'NSUInteger'可能更合适(在您的数据源方法中也是一个问题) ,以及该方法的非描述性名称。我建议为数字和字符串定义常量,使用'NSLocalizedString'定位字符串(因为它们似乎用于显示给用户),切换到'NSInteger'或'NSUInteger',并将'setArrayCheckOut:'重命名为更清楚地说明了方法的目标,而不仅仅是它的实现。 – 2010-10-02 23:48:58