【发布时间】:2016-10-24 07:44:16
【问题描述】:
我正在创建一个包含单元格枚举类型的单词搜索游戏。我需要创建一个二维数组,为此将编写一个 NSArray 的 NSArrays 来保存枚举类型的对象。
我查看了创建一个枚举数组,并且这样做了。我还能够创建NSArrays 的NSArray。但是创建包含枚举类型的NSArrays 的NSArray 并不能像我期望的那样工作:
我的BoardCellState.h班级:
typedef NS_ENUM(NSUInteger, BoardCellState) {
BoardCellStatePartOfWord = 0,
BoardCellStatePartOfWordSelected = 1,
BoardCellStateNotPartOfWord = 2,
BoardCellStateNotPartOfWordSelected = 3,};
我的NSArray(10x10 网格)
NSArray *partofwordArray = [NSArray arrayWithObjects:[NSArray arrayWithObjects:@[@(BoardCellStatePartOfWord),@(BoardCellStatePartOfWord),@(BoardCellStatePartOfWord),@(BoardCellStatePartOfWord),@(BoardCellStatePartOfWord),@(BoardCellStatePartOfWord),@(BoardCellStateNotPartOfWord),@(BoardCellStatePartOfWord),@(BoardCellStateNotPartOfWord),@(BoardCellStateNotPartOfWord)], nil],
...(repeated 9 more times)...nil];
现在访问 partofwordArray 无法正常工作
int partofWordState = [partofwordArray [row][col] intValue];
导致无法识别的选择器被发送到调用堆栈 (intValue),其中行和列是 0 到 9 之间的任何整数(因此在我的网格中)
我的解决方案是
id returnedID =partofwordArray[row][0];
int partofWordState = [returnedID[col] intValue];
任何行和列都在 0 到 9 之间。
虽然这可行,但它很老套,我无法解释原因。产生错误的那一行更有意义,那么为什么它不起作用呢?
【问题讨论】:
标签: ios objective-c arrays enums