如何在Objective-C中创建Grid类

时间:2013-08-26 07:39:01

标签: ios objective-c grid nsmutablearray

我试图在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网格?

由于

1 个答案:

答案 0 :(得分:0)

按Grid类我假设你的意思就像一个表格/电子表格,其中有X个Y个单元格/项目。

请注意,您无法在NSArray中存储像int这样的标量类型,您必须使用Objective-C Objects而不是NSNumber。

您似乎正在尝试创建一个类来创建所需的2D数组,您可以使用类方法来生成2D数组。

@interface Grid : NSObject
+ (NSMutableArray *)createGridWithRows:(int)numRows andColumns:(int)numCols;
@end