如果你想保存其他类型,如UIImage,你应该进行编码(即archive),或者将它转换为NSData、NSNumber或者NSString。1.
存
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setFloat:self.slider.value forKey:kTheSlider];
取
self.sliderValueLabel.text = [[defaults objectForKey:kTheSlider] stringValue];
self.slider.value = [defaults floatForKey:kTheSlider];
2.
存
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:self.theSwitch.on forKey:kTheSwitch];
取
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
self.theSwitch.on = [defaults boolForKey:kTheSwitch];
3.
存
[[NSUserDefaultsstandardUserDefaults] setObject:shopperAddress.shopperNameforKey:@"kReceiverName"];
取
receiverOneName = [[NSUserDefaultsstandardUserDefaults] objectForKey:@"kReceiverName"];
存
[[NSUserDefaultsstandardUserDefaults] setObject:shopperAddress.shopperNameforKey:@"kkReceiverNameTwo"];
取
((UILabel *)[shopCarCell viewWithTag:601]).text = [[NSUserDefaultsstandardUserDefaults] objectForKey:@"kkReceiverNameTwo"];
参考http://www.cnblogs.com/jiangshiyong/archive/2012/06/06/2538122.html
UserDefaults不是立即写入,而是根据时间戳定时的把缓存中的数据写入本地磁盘。所以调用了set方法之后数据有可能还没有写入磁盘应用程序就终止了。出现以上问题。可以通过调用synchornize方法强制写入。