【问题标题】:How to use UISwitch with NSUserDefault如何将 UISwitch 与 NSUserDefault 一起使用
【发布时间】:2014-05-15 04:12:04
【问题描述】:
 defaults = [NSUserDefaults standardUserDefaults];
 NSLog(@"%@",[defaults objectForKey:@"firsttime"])

if([[defaults objectForKey:@"firsttime"]isEqualToString:@"YES"])
{
    UISwitch *onoff = (UISwitch *) sender;
    if(onoff.on)
    {
        NSLog(@"yes on1 facebookswitch");
        facebookSwitch.on = YES;
        [userDefault setValue:@"true" forKey:@"facebooknotify"];

        NSLog(@"on");
        if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
            [validate alertCommonWithoutMessage:NSLocalizedString(@"val_message",nil) :NSLocalizedString(@"val_facebook_login",nil) :@"OK"];
            facebookSwitch.on = YES;
            NSLog(@"yes on2 facebookswitch");

        }
        else {
            NSLog(@"val_facebook_conf");
            [validate alertCommonWithoutMessage:NSLocalizedString(@"val_message",nil) :NSLocalizedString(@"val_facebook_conf",nil) :@"OK"];
            facebookSwitch.on = NO;
            [userDefault setValue:@"false" forKey:@"facebooknotify"];
            NSLog(@"yes off1 facebookswitch");

我正在使用这种方法,但总和响应为空。

【问题讨论】:

  • 具体但总和响应为空。
  • 尽量贴出完整的代码,留下几行代码没有意义。
  • firsttime 的值是如何设置的?您是在谈论设置包中的UISwitch 吗?你的问题到底是什么?发布的代码的哪一部分给您带来了问题?
  • [userDefault synchronize]; 从您的代码中丢失。顺便问一下,什么是 null?
  • @iphonic 为什么它不见了?不需要,因为在 NSUserDefaults 中没有设置任何值。即使设置了一个值,它仍然不是必需的。

标签: ios nsuserdefaults uiswitch


【解决方案1】:

试试这个代码:

// add this code in your switch touch event
- (IBAction)YourSwitch:(UISwitch*)sender
{
    if (UISwitch.on)
    {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setBool:true forKey:@"Sound"];
        [defaults synchronize];
    }
    else
    {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setBool:false forKey:@"Sound"];
        [defaults synchronize];
    }
}

// add this code in your viewDidload .
BOOL isSound= [[NSUserDefaults standardUserDefaults] objectForKey:@"Sound"];

if (isSound){
    _ref_slider.on=TRUE;
} else {
    _ref_slider.on=FALSE;
}

我希望这段代码对你有用。

【讨论】:

  • @rmaddy 只是我使用一个字符串来简单了解如何使用 userdefault。
  • 向新手展示如何不恰当地使用事物并不能真正帮助他们理解。
【解决方案2】:

至于为什么不起作用,最常见的问题是[userDefault synchronize]

另外,与其使用字符串布尔值,不如使用:

[userDefault setBool:YES forKey:@"facebooknotify"];

然后通过

访问
BOOL notified = [userDefault boolForKey:@"facebooknotify"];

【讨论】:

  • 这个答案为时过早,因为我们不知道userDefault 是什么。 OP 没有显示代码中的内容。我们知道defaultsNSUserDefaults,但我们没有看到userDefault 的声明。
  • 啊,我看错了...没有区分变量名。我读到userDefaultdefaults 是一回事。
  • 我正在静态传递值...所以我必须通过对象传递值..如果我使用 BOOL,我该如何传递值
  • “静态传递值”是什么意思?作为实例变量?在 Obj-C 中,您可以像使用任何 Obj-C 对象一样将 BOOL 用作变量、实例变量、@property 等,但显然没有指针。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-03
  • 1970-01-01
  • 2011-12-25
  • 2011-08-02
  • 1970-01-01
  • 2021-01-02
  • 1970-01-01
相关资源
最近更新 更多