我以为我已将其排序,但我仍然遗漏了一些东西。
很简单,我有一个包含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,对吧?
任何帮助,非常感谢。我真的想彻底理解这一点,有些事情让我不知所措......
干杯,
克里斯
答案 0 :(得分:0)
如果您还没有,那么您需要在其他课程中进行如下导入
#import "Settings.h"