2011-04-27 55 views
0

一直致力于一些代码优化,并意识到如果我的应用程序具有偏好系统,它将非常有用。在NSUser中保存偏好设置默认为稍后调用

现在,我的代码如何工作。

基于存储在NSUserDefaults的

的整数的方法,例如运行

if ([[NSUserDefaults standardUserDefaults] integerForKey:@"scifi1"] == 040){ 
      [self spaceDown]; 
     } 
     else if ([[NSUserDefaults standardUserDefaults] integerForKey:@"scifi1"] == 10040){ 
      [self ctrldown]; 
      [self spaceDown]; 
     } 

现在我想做的是,当我离开的看法(通过特定的按钮)是转储@“scifi1”到一个新的首选项的值,例如说 - 一个整数名为@“savedscifi1 “

现在我知道如何整数保存到NSUserDefaults的,

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
    [userDefaults setInteger:VALUEHERE forKey:@"savedscifi1"]; 
    [userDefaults synchronize]; 

但是 - 我不知道我怎么能在scifi1的,而不是(在这种情况下)‘VALUEHERE’的值substiture - 可以任何人都可以帮忙吗?我觉得这很简单,但我忍不住觉得我有点厚...睡眠不足,接近最后期限!我知道我不能只打电话@“scifi1”,但超越那个....?

+0

'040'是一个八进制数。它不等于'40'。 – 2011-04-27 12:12:52

+0

@Jonathan ascii for space is 0x20 == 32 == 040所以代码看起来正确 – 2011-04-27 12:42:53

+0

实际上在这种情况下它并不重要 - 这些都是内部使用的数字 - 不一定与ASCII数字有关(尽管有些是,当如果我需要创造性的东西,我开始有其他的东西 - 但是很好的地方;)虽然这里对我的问题没有影响:) – David26th 2011-04-27 12:54:55

回答

2
NSInteger value = [[NSUserDefaults standardUserDefaults] integerForKey: ...]; 
[[NSUserDefaults standardUserDefaults] setInteger: value forKey: ...]; 
+0

看起来只是这份工作 - 在我给它一个大酒杯之前运行一个快速测试“绿色勾号,但是谢谢:D – David26th 2011-04-27 12:20:50

+0

而且有你的勾号:)做了一个款待,简单,因为我预料它应该是!我想你实际上只是给了我一个提示,在其他地方修剪几百条代码行......也许! – David26th 2011-04-27 13:14:23