nsuserdefaults值被取代

时间:2013-06-26 09:45:12

标签: ios nsuserdefaults

在同一个viewcontroller类中,我使用两个NSUserDefaults,一个用于保存UISwitch状态,另一个用于DatePicker值。 这是我的代码:

-(IBAction) switchValueChanged
{
    NSString *value = @"ON";

    NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
    if (switch1.on)
    {
        value = @"OFF";
        [userPreferences setObject:value forKey:@"stateOfSwitch"];     
        [switch1 setOn:YES animated:YES];
    }
    else
    {
        [userPreferences setObject:value forKey:@"stateOfSwitch"];

        [switch1 setOn:NO animated:YES];
        [[UIApplication sharedApplication] cancelAllLocalNotifications];
    }
}

- (IBAction)scheduleTime
{
    NSDate *pickerTime=datePicker.date;
    [[NSUserDefaults standardUserDefaults] setObject:pickerTime forKey:@"setPickerTime"];
    [[NSUserDefaults standardUserDefaults] synchronize]; 
}

问题是,只有日期选择器的nsuserdefault正在运行,其他的不工作。我认为DatePicker的NSUserDefault值正在取代UISwitch的NsUserDefault值。任何人都可以帮我解决这个问题..

2 个答案:

答案 0 :(得分:2)

  

NSUserDefaults缓存信息以避免打开   每次需要默认值时,用户的默认数据库。该   同步方法,该方法会定期自动调用   间隔,使内存缓存与用户的默认值保持同步   数据库中。

在第一个函数中的if / else块之后添加[userPreferences synchronize];调用,然后重试。

答案 1 :(得分:0)

试试这段代码:

if (switch1.on)
    {
        value = @"OFF";
     [[NSUserDefaults standardUserDefaults] setObject:value forKey:@"stateOfSwitch"];

        [switch1 setOn:YES animated:YES];
    }
    else
    {
       [[NSUserDefaults standardUserDefaults] setObject:value forKey:@"stateOfSwitch"];
        [switch1 setOn:NO animated:YES];
        [[UIApplication sharedApplication] cancelAllLocalNotifications];
    }