【问题标题】:2d NSArray with enumerated types in objective-c在objective-c中具有枚举类型的2d NSArray
【发布时间】:2016-10-24 07:44:16
【问题描述】:

我正在创建一个包含单元格枚举类型的单词搜索游戏。我需要创建一个二维数组,为此将编写一个 NSArrayNSArrays 来保存枚举类型的对象。

我查看了创建一个枚举数组,并且这样做了。我还能够创建NSArraysNSArray。但是创建包含枚举类型的NSArraysNSArray 并不能像我期望的那样工作:

我的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


    【解决方案1】:

    你做错了。你在这里创建三维数组.. 使用如上定义的数组,您可以获得类似

    的值

    int partofWordState = [partofwordArray [row][0][col] intValue];

    它会工作..不会给出任何错误。

    对于二维数组,你应该像下面这样定义..

    NSArray *partofwordArray = [NSArray arrayWithObjects:[NSArray arrayWithObjects:@(BoardCellStatePartOfWord),@(BoardCellStatePartOfWord),@(BoardCellStatePartOfWord),@(BoardCellStatePartOfWord),@(BoardCellStatePartOfWord),@(BoardCellStatePartOfWord),@(BoardCellStateNotPartOfWord),@(BoardCellStatePartOfWord),@(BoardCellStateNotPartOfWord),@(BoardCellStateNotPartOfWord ), 无] ,
    ....最多 9 个 ..

    使用此代码,您实际上可以按照您想要的方式访问数据。

    int partofWordState = [partofwordArray [row][col] intValue];

    【讨论】:

    • 祝你好运!编码愉快!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 2010-12-10
    相关资源
    最近更新 更多