在同一个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值。任何人都可以帮我解决这个问题..
答案 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];
}