NSUserDefaults如果用户删除内存中的应用程序,如何检查是否可以保存?

时间:2013-09-02 07:25:07

标签: iphone ios objective-c ipad

伙计我有一个简短的问题。我读了几个类似的答案,但它们不太务实。

当您退出xCode时,NSUserDefaults不会被保存。但是,当我将我的应用程序从iPhone(在真实设备上)的内存中取出后,NSUserDefaults确实被保存了,我怎么能检查?可以在模拟器上查看吗?或者我的代码错了吗?

我在视图控制器中有这个代码,我称之为settingsViewControllerNSUserDefaults中没有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"]);
}

3 个答案:

答案 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"];
    }
}

请注意,这不是我真正问题的答案,真正的答案是尼古拉的答案。这个答案只是说明了我如何使用他的答案来理解我的问题的根源。