我正在寻找在 View Controller 之间传递难度级别的最佳方法。
目前我将此设置作为字符串。有简单/中等/困难三个选项,我知道这不是最好的方法,所以我在这里寻找正确的方法。
目前我检查按钮上的标签并设置如下字符串值:
if (sender.tag == 10) {
self.turnDifficulty = @"Easy";
} else if (sender.tag == 20) {
self.turnDifficulty = @"Medium";
} else if (sender.tag == 30) {
self.turnDifficulty = @"Hard";
}
然后我将值传递给 prepareForSegue
方法。这种方法的替代方法是什么?虽然这里没有问题并且工作正常,但在这里使用字符串并不是很干净。
我们使用枚举在 Objective-C(实际上,在 C 和 C++ 中也是如此)中处理字符串的另一种方法:
typedef enum Difficulty {
DIFFICULTY_EASY
, DIFFICULTY_MEDIUM
, DIFFICULTY_HARD
} Difficulty;
在所有 View Controller 包含的 header 中声明此 enum
,并像使用数字常量一样使用枚举常量。该语言将确保常量保持不同,即使您选择向枚举添加更多项。
当你声明 @property
或 Difficulty
类型的参数时,不要使用星号,因为 enum
是原始类型,不是引用类型。例如:
@property (nonatomic, readwrite) Difficulty difficultyLevel;
或
-(void)openWithDifficultyDifficulty)level;
编辑:(谢谢,Rob!)
从 Xcode 4.4 开始,您还可以使用显式固定的底层类型,例如
typedef enum Difficulty : NSUInteger {
kDifficultyEasy
, kDifficultyMedium
, kDifficultyHard
} Difficulty;
关于ios - 在 Controller 之间传递难度级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20952997/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |