2013-02-07 34 views
0

我使用的鍵/值的方法來整保存到的NSUserDefaults的。我在交換機和案例中有30個不同的情況,每個案例都將一個整數值保存到特定的密鑰。我爲每個正在保存的整數創建了一個方法。下面有一些代碼來解釋:鍵/值保存到了很多按鍵有效

-(void) saveInteger1:(NSInteger)int1 { 
    [[NSUserDefaults standardUserDefaults] setInteger:int1 forKey:@"Integer1"]; 
} 
-(void) saveInteger2:(NSInteger)int2 { 
    [[NSUserDefaults standardUserDefaults] setInteger:int2 forKey:@"Integer2"]; 
} 
-(void) saveInteger3:(NSInteger)int3 { 
    [[NSUserDefaults standardUserDefaults] setInteger:int3 forKey:@"Integer3"]; 
} 
//And I got from 1-30 of these methods 

switch (newInteger) { 
    case 1: 
    [self saveInteger1:newInteger]; 
    break; 
    case 2: 
    [self saveInteger2:newInteger]; 
    break; 
    case 3: 
    [self saveInteger3:newInteger]; 
    break; 
//And from 1-30 cases 
} 

什麼是更有效的方式來做到這一點,所以它不會是代碼,那麼多行?

+0

所以我想,你的代碼片段僅僅是一個例子,因爲如果你從字面上不喜歡你寫的,這將是完全沒用的,有@「整數1」的默認值:1,@「整數2」:2等... –

+0

呀,這不正是我所用的代碼.. – Peter

回答

3

是否所有形式IntegerX的鑰匙?如果是的話,請執行:

- (void)saveInteger:(NSInteger)value { 
    NSString *key = [NSString stringWithFormat:@"Integer%d", value]; 
    [[NSUserDefaults standardUserDefaults] setInteger:value forKey:key]; 
} 

[self saveInteger:newInteger]; 

switch聲明是必需的。

+0

確定的答案,但是這是沒有必要。爲什麼使用N個鍵如果每個鍵都只能保存一個可能的值? –

+0

@RamyAlZuhouri閱讀問題。他想要不同的鑰匙。 – rmaddy

+0

我知道他想要不同的鑰匙,我說他不需要他們。他的鍵 - 值對是@ 「整數1」:1,@ 「整數2」:2,@ 「Integer3」:3;爲什麼? –