Ios Obj C:检查NSUserDefaults中的整数
这是我的情况-让我们看看是否有编码天才可以帮助我 因此,我的情况是: 我在NSUserDefaults中存储了一个名为@“scifi1”的整数-它可以是……比如说250+个值中的一个-非顺序,但都是已知的(即,它来自多项选择) 我需要检查所述整数的值,并根据它是什么执行不同的操作 现在,我的代码是这样的Ios Obj C:检查NSUserDefaults中的整数,ios,xcode,if-statement,Ios,Xcode,If Statement,这是我的情况-让我们看看是否有编码天才可以帮助我 因此,我的情况是: 我在NSUserDefaults中存储了一个名为@“scifi1”的整数-它可以是……比如说250+个值中的一个-非顺序,但都是已知的(即,它来自多项选择) 我需要检查所述整数的值,并根据它是什么执行不同的操作 现在,我的代码是这样的 if ([[NSUserDefaults standardUserDefaults] integerForKey:@"scifi1"] == 040){ [self sp
if ([[NSUserDefaults standardUserDefaults] integerForKey:@"scifi1"] == 040){
[self spaceup];
}
if ([[NSUserDefaults standardUserDefaults] integerForKey:@"scifi1"] == 10040){
[self spaceup];
[self ctrlup];
}
if ([[NSUserDefaults standardUserDefaults] integerForKey:@"scifi1"] == 20040){
[self spaceup];
[self altup];
}
虽然这是可行的,但一旦您添加了几十个代码,代码就变得
a) 很长
b) 当使用几种不同的方法时,iPhone无法合理处理的时间太长了,事实上Xcode抛出了一个GCC4.2错误告诉我这一点
那么什么是最好的检查方法呢?必须有一个更好的方法,然后重复“如果”语句
我尝试设置开关/案例样式的设置,但由于整数不是常量,它似乎对此不满意——老实说,从长远来看,我不确定使用开关/案例是否比使用多个if语句更好
有人有什么好主意吗
编辑:
好的,我已经试过了
-(void)checkandrunup {
if (tempInt == 040){
[self spaceup];
}
if (tempInt == 10040){
[self spaceup];
[self ctrlup];
}
if (tempInt == 20040){
[self spaceup];
[self altup];
}
if (tempInt == 30040){
[self spaceup];
[self shiftup];
}}
-(IBAction)torpup{
//If to check for edit and display popover
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"viewEdit"] == YES) {
}
else {
NSInteger tempInt = [[NSUserDefaults standardUserDefaults] integerForKey:@"scifi1"];
}
//First Sound
if([[NSUserDefaults standardUserDefaults] boolForKey:@"viewHidden"] == YES) {
NSString *path = [NSString stringWithFormat:@"%@%@",
[[NSBundle mainBundle] resourcePath],
@"/beep1.WAV"];
SystemSoundID soundID;
NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO];
AudioServicesCreateSystemSoundID((CFURLRef)filePath, &soundID);
AudioServicesPlaySystemSound(soundID); }
//Second Sound
else {
NSString *path = [NSString stringWithFormat:@"%@%@",
[[NSBundle mainBundle] resourcePath],
@"/beep2.WAV"];
SystemSoundID soundID;
NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO];
AudioServicesCreateSystemSoundID((CFURLRef)filePath, &soundID);
AudioServicesPlaySystemSound(soundID);
}
}
然而,tempInt并没有从Torpup传递到check和runup——有没有办法实现这一点呢?我正要说“使用开关”,但你说这些值不是常数。在这种情况下,我建议:
standardUserDefaults
和integerWorkey:
1000次else。正如您现在所看到的,如果第一次检查成功,那么所有其他检查仍然会完成,即使您不需要执行它们
If(value>=1000&&value<2000)
。如果没有,请确保有一个返回值,告诉您是否需要进行额外的检查我只是尝试了一些不同的东西-你可以看看我即将抛出的编辑。你可以给你的方法添加一个参数,比如
-(void)checkandrunup:(NSInteger)tempInt
;-)那么,这会不会和torpup方法中的tempint相同?(有点发现我的脚还在这里哈哈)@david26:不是自动的,当然你也需要这样称呼它:[self-checkandrunup:myOtherTempInt]
或[自检和运行:[[NSUserDefaults standardUserDefaults]整数工作:@“scifi1”]代码>第二个选项不起作用-基本上每次运行一个方法时,我都让它将其“Scifi1”(或2,3,4,5)的值存储到tempInt中-我希望将其传递给一个单独的方法,以减少重复编码。我还没有到能够得到准确的引用的程度,但我知道它不会对正在检查的if的数量感到高兴。如果按照你的回答,我用其他的,如果我不知道这是否会让它更快乐…我会试试。