伙计我有一个简短的问题。我读了几个类似的答案,但它们不太务实。
当您退出xCode时,NSUserDefaults
不会被保存。但是,当我将我的应用程序从iPhone(在真实设备上)的内存中取出后,NSUserDefaults
确实被保存了,我怎么能检查?可以在模拟器上查看吗?或者我的代码错了吗?
我在视图控制器中有这个代码,我称之为settingsViewController
(NSUserDefaults
中没有appDelegate
。
- (void)viewDidLoad
{
[super viewDidLoad];
defaults = [NSUserDefaults standardUserDefaults];
}
- (IBAction)firstAlert:(UISwitch *)sender
{
[defaults setBool:firstAlert.on forKey:@"firstAlert"];
[defaults synchronize];
NSLog(@"%d",[defaults boolForKey:@"firstAlert"]);
}
答案 0 :(得分:1)
当您通过点击停止退出xcode时,它将无法保存。点击主页按钮试试吧。
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
if (standardUserDefaults) {
[standardUserDefaults setObject:myString forKey:@"Prefs"];
[standardUserDefaults synchronize];
}
答案 1 :(得分:1)
NSUserDefaults
的(本地域)的实际后备存储位于Library/Preferences/<bundle-identifier>.plist
。您可以将此文件复制到Mac并使用Xcode检查其内容。
如果您发现自己的偏好未保存,我会查看您的defaults
变量。我打赌它没有初始化。
答案 2 :(得分:0)
感谢Nikolai Ruhe的回答,我理解了我错过了什么以及为什么我首先提出这个问题。似乎初始设置没有设置,因为我没有将这些代码行传递到我的viewDidLoad
。这与Sail的答案相同,但我没有看到该代码与viewDidLoad
之间的联系。这是我方法中所需的完整实现。
- (void)viewDidLoad
{
[super viewDidLoad];
defaults = [NSUserDefaults standardUserDefaults];
if(defaults){
firstAlert.on = [defaults boolForKey:@"firstAlert"];
}
}
请注意,这不是我真正问题的答案,真正的答案是尼古拉的答案。这个答案只是说明了我如何使用他的答案来理解我的问题的根源。