我正在尝试通过转换我用 C 编写的程序来学习 Objective C。该程序适用于大型二维数组并对其进行计算,因此我需要能够以表格格式显示二维数组在用户界面上。我能想到的最好方法是将我的 C 样式数组逐行转换为 NSMutableArrays,然后将“行”NSMutableArrays 作为“行堆栈”存储在另一个 NSMutableArray 中以传递给 NSTableView。(如果有更好的方法,请告诉我。)
我遇到的问题是我似乎无法让它们存储在 arrayOfArrays 中。它只是空的。我确定我犯了一个愚蠢的菜鸟错误,我认为这与我调用构造函数的方式有关,但我无法弄清楚。
这是我的代码:
int grid[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
NSMutableArray *arrayOfArrays;
int x=0;
-(void)awakeFromNib
{
NSMutableArray *array1 = [[NSMutableArray alloc]init];
NSMutableArray *array2 = [[NSMutableArray alloc]init];
NSMutableArray *array3 = [[NSMutableArray alloc]init];
for (int y=0; y < 3; y++) {
[array1 addObject:[NSNumber numberWithInt:grid[x][y]]];
}
x++;
for (int y=0; y < 3; y++) {
[array2 addObject:[NSNumber numberWithInt:grid[x][y]]];
}
x++;
for (int y=0; y < 3; y++) {
[array3 addObject:[NSNumber numberWithInt:grid[x][y]]];
}
[arrayOfArrays addObject:array1];
[arrayOfArrays addObject:array2];
[arrayOfArrays addObject:array3];
}
- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
{
return [arrayOfArrays count];
}
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
return [arrayOfArrays objectAtIndex:rowIndex];
}
@end
哦,这个对象是一个 NSTableViewSource,它是 NSTableView 的数据源。