Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何使用用户默认值保存交换机状态?_Iphone_Save_State_Nsuserdefaults_Uiswitch - Fatal编程技术网

Iphone 如何使用用户默认值保存交换机状态?

Iphone 如何使用用户默认值保存交换机状态?,iphone,save,state,nsuserdefaults,uiswitch,Iphone,Save,State,Nsuserdefaults,Uiswitch,是否有使用NSUserDefaults存储UISwitch状态的方法? 如果状态是开着的,我想采取一些行动 我可以这样做吗? 谢谢 要保存: - (void)mySwitchAction:(id)sender { if (sender == mySwitch) { BOOL mySwitchValue = [ sender isOn ]; NSString *tmpString = mySwitchValue ? @"1" : @"-1" ; NSUserDefaul

是否有使用NSUserDefaults存储UISwitch状态的方法?
如果状态是开着的,我想采取一些行动

我可以这样做吗?
谢谢

要保存:

- (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];
要保存:

- (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];

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

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
   [userDefaults setBool:switchState forKey:@"mySwitchValueKey"];
把它拿出来:

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

哪个imo更简单,根本没有if-else代码,没有字符串转换,对于

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

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
   [userDefaults setBool:switchState forKey:@"mySwitchValueKey"];
把它拿出来:

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

哪个imo更简单,根本没有if-else代码,没有字符串转换回for

,我可以使用一个没有声明的方法吗?我必须将状态保存在一个控制器中,然后验证状态并在另一个控制器中执行某些操作。。。我该怎么做?这听起来像是一个新的、不同的问题。@Matthew:我认为这很简单,你可以在另一个视图控制器中从userDefaults中获取状态。看看我的答案,一个更简单的答案,没有方法声明:)我可以使用一个没有声明的方法吗?我必须将状态保存在一个控制器中,然后验证状态并在另一个控制器中执行某些操作。。。我该怎么做?这听起来像是一个新的、不同的问题。@Matthew:我认为这很简单,你可以在另一个视图控制器中从userDefaults中获取状态。看看我的答案,一个更简单的答案,没有方法声明:)我相信这就是我要找的。。。我试试。。。谢谢我相信这就是我要找的。。。我试试。。。谢谢