Xcode Enum很难受

时间:2010-06-11 22:08:02

标签: objective-c xcode enums

我以为我已将其排序,但我仍然遗漏了一些东西。

很简单,我有一个包含DAO的Settings类(坐在plist上)。为了方便和可读性,我希望设置一些枚举,例如GamePlayType和DifficultyLevel。现在我在@interface行上面的Settings.h文件中定义它们:

typedef enum {
 EASY,
 NORMAL,
 HARD
} DifficultyLevel;

typedef enum {
 SET_NUMBER_OF_MOVES,
 TO_COMPLETION
} GamePlayType;

如果我从Settings类中访问它们,如:

- (int)gridSizeForLOD {
 switch ([self difficultyLevel]) {
  case EASY:
   return GRID_SIZE_EASY;
  case NORMAL:
   return GRID_SIZE_NORMAL;
  case HARD:
   return GRID_SIZE_HARD;
  default:
   return GRID_SIZE_NORMAL;
 }
}

一切都很好。

但是,如果我尝试在Settings类之外访问它们,让我们说在我的主视图控制器类中,如下所示:

if (([settings gameType] == SET_NUMBER_OF_MOVES) && (numMoves == [settings numMovesForLOD])) {
    [self showLoseScreen];
}

我收到错误(例如EXC_BAD_ACCESS)或条件总是失败。我做错了吗?

另外,我应该指出我有这个代码用于调用gameType(它存在于Settings类中):

- (GamePlayType)gameType {
    return [dao gameType];
}

并且DAO实现了这样的gameType:

- (int)gameType {
    return (settingsContent != nil) ? [[settingsContent objectForKey:@"Game Type"] intValue] : 0;
}

我知道我让DAO返回一个int而不是一个GamePlayType,但是A)当我尝试使用“正确的”数据类型时,我所描述的问题出现了,并且B)我认为这不重要enum只是一堆命名的int,对吧?

任何帮助,非常感谢。我真的想彻底理解这一点,有些事情让我不知所措......

干杯,

克里斯

1 个答案:

答案 0 :(得分:0)

如果您还没有,那么您需要在其他课程中进行如下导入

#import "Settings.h"