代码之家  ›  专栏  ›  技术社区  ›  matteodv

如何用用户默认值保存开关状态?

  •  1
  • matteodv  · 技术社区  · 14 年前

    有没有一种方法可以用NSUserDefaults存储UISwitch的状态?
    如果状态正常我想采取行动。。。


    2 回复  |  直到 14 年前
        1
  •  3
  •   vodkhang    14 年前

    hotpaw2的答案是好的,也可以很好地用于大分段控制(超过2个状态)。但是如果您只想存储2个状态,为什么不使用 [setBool:forKey:] 这样地

        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
       [userDefaults setBool:switchState forKey:@"mySwitchValueKey"];
    

    把它拿出来:

       BOOL swichState = [userDefaults boolForKey:@"mySwitchValueKey"];
    

    在我看来,这要简单得多,完全没有if-else代码,没有字符串转换

        2
  •  1
  •   hotpaw2    14 年前

    - (void)mySwitchAction:(id)sender
    {
      if (sender == mySwitch) {
        BOOL mySwitchValue = [ sender isOn ];
        NSString *tmpString = mySwitchValue ? @"1" : @"-1" ;
        NSUserDefaults  *myNSUD = [NSUserDefaults standardUserDefaults];
        [ myNSUD setObject:tmpString forKey: @"mySwitchValueKey" ];
        [ myNSUD synchronize ];
        // do other stuff/actions
      }
    }
    

    NSUserDefaults  *myNSUD = [NSUserDefaults standardUserDefaults];
    NSString *tmpString =  [ myNSUD stringForKey: @"mySwitchValueKey"];
    BOOL mySwitchValue = NO;  // or DEFAULT_VALUE
    if (tmpString != nil) { 
      mySwitchValue = ( [ tmpString intValue ] == 1 ); 
    }
    [mySwitch setOn: mySwitchValue];