我需要在Settings.bundle中保存滑块首选项。
我正在使用以下代码写入Settings.bundle:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setInteger:mySlider.value forKey:@"TimerSliderKey"];
[defaults synchronize];
以下代码从Settings.bundle中读取:
NSUserDefaults *defaults2 = [NSUserDefaults standardUserDefaults];
int valueForSlider = [defaults2 integerForKey:@"TimerSliderKey"];
NSLog(@"The saved slider value is %@" , valueForSlider);
此代码不起作用。有人可以给我一些我可以使用的替换代码吗?
答案 0 :(得分:5)
你的问题在这里:
NSLog(@"The saved slider value is %@" , valueForSlider);
您需要使用%d
格式说明符,%@
是格式说明符,用于将description
消息发送到参数。
NSLog(@"The saved slider value is %d" , valueForSlider);
以下是格式说明符列表:
有关详细信息,请参阅String Programming Guide。
答案 1 :(得分:1)
另一个也许是真正的问题是UISlider的默认值范围是0.0到1.0。将其存储为整数,由于截断,您将只看到0或1。
您应该将其存储为浮点,而不是完全保留滑块的值。
答案 2 :(得分:0)
使用这个......
[**yourslider** addTarget:self action:@selector(sliderValueChanged:)
forControlEvents:UIControlEventValueChanged];
if ([[NSUserDefaults standardUserDefaults]floatForKey:@"value"]) {
yourslider.value= [[NSUserDefaults standardUserDefaults]floatForKey:@"value"];
}
**--save your value in this method**
-(IBAction)sliderValueChanged:(UISlider *)sender
{
NSLog(@"slider value = %f", sender.value);
[[NSUserDefaults standardUserDefaults]setFloat:sender.value forKey:@"value"];
}