我试图在Objective-C中创建一个简单的Grid类。我创建了一个继承自NSObject的新Objective-C类。我遇到了麻烦。
我希望能够做到这样的事情:
Grid *grid = [[Grid alloc] initWithNumRows:5 numCols:5];
int elem = grid[1][1];
但是,我知道如何创建新网格类的唯一方法是在Grid界面中创建NSMutableArray属性。
@interface Grid : NSObject
@property int numRows;
@property int numCols;
@property (strong, nonatomic) NSMutableArray *grid;
-(id) init;
-(id) initWithNumRows:(int)numRows numCols:(int)numCols;
@end
并且在实施中有:
-(id) initWithNumRows:(int)numRows numCols:(int)numCols
{
if ( (self = [super init]) )
{
self.numRows = numRows;
self.numCols = numCols;
self.grid = [[NSMutableArray alloc] init];
for (int k = 0; k < numRows; ++ k)
{
NSMutableArray* subArr = [[NSMutableArray alloc] init ];
for (int s = 0; s < numCols; ++ s)
{
[subArr addObject:@0];
}
[self.grid addObject:subArr];
}
}
return self;
}
然而,这意味着如果我想使用括号表示法,我将不得不这样做:
Grid *myG = [[Grid alloc] initWithNumRows:5 numCols:5];
NSMutableArray *grid = myG.grid;
int elem = grid[1][1];
这看起来很麻烦,我觉得我错过了什么。有没有办法可以在init中返回NSMutableArray网格?
由于
答案 0 :(得分:0)
按Grid类我假设你的意思就像一个表格/电子表格,其中有X个Y个单元格/项目。
请注意,您无法在NSArray中存储像int这样的标量类型,您必须使用Objective-C Objects而不是NSNumber。
您似乎正在尝试创建一个类来创建所需的2D数组,您可以使用类方法来生成2D数组。
@interface Grid : NSObject
+ (NSMutableArray *)createGridWithRows:(int)numRows andColumns:(int)numCols;
@end