【问题标题】:Key/Value saving to a lot of keys effectively有效地将键/值保存到许多键
【发布时间】:2013-02-09 00:59:35
【问题描述】:

我正在使用键/值方法将整数保存到 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
}

有什么更有效的方法来做到这一点,这样就不需要那么多代码行了?

【问题讨论】:

  • 所以我猜你的代码 sn-p 只是一个例子,因为如果你真的像你写的那样做,那么使用 @"Integer1":1, @ "Integer2":2 等...
  • 是的,这不是我使用的代码..

标签: ios objective-c cocoa-touch key-value


【解决方案1】:

所有的键都是IntegerX 形式的吗?如果是这样,那么做:

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

[self saveInteger:newInteger];

不需要switch 语句。

【讨论】:

  • 好的答案,但这不是必需的。如果每个键都可能只包含一个可能的值,为什么还要使用 N 个键?
  • @RamyAlZuhouri 阅读问题。他想要不同的钥匙。
  • 我知道他想要不同的钥匙,我是说他不需要它们。他的键值对是 @"Integer1": 1, @"Integer2":2, @"Integer3":3 ;为什么?
  • @RamyAlZuhouri 原始代码的目标不明确。但如果没有来自 OP 的进一步信息,很难确定什么是真正合适的。
  • 谢谢!这正是我想要的!接受并投票!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-22
相关资源
最近更新 更多