【问题标题】:load/save settings in iOS在 iOS 中加载/保存设置
【发布时间】:2010-10-21 09:55:08
【问题描述】:

我在 AppDelegate 中定义了以下两个过程。保存设置和加载设置。我在 AppDidFinishLaunching 方法中调用我的 loadSettings 过程,并在我的设置视图中调用 saveSettings 过程,一旦单击保存按钮。

这两种方法似乎都在正确的时间、正确的次数(一次)被调用,并且使用了正确的数据。我的设置对象获得了正确的数据,但数据似乎并没有真正保存。当我运行加载代码时,我得到的变量是空的(不是零)。

我尝试将相同的加载代码放在不同的视图中,它工作正常,但由于某种原因,我的 appDelegate 中没有得到结果。

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
    [window addSubview:navigationController.view];
    [window makeKeyAndVisible];
    [self loadSettings];
    [self setDefaults];
}

-(void)loadSettings{
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    settings.masterLocation = [prefs objectForKey:@"masterLocation"];
    settings.masterPort = [prefs objectForKey:@"masterPort"];
    settings.userName = [prefs objectForKey:@"userName"];
    settings.passWord = [prefs objectForKey:@"passWord"];
    settings.autoLogin=[prefs objectForKey:@"autoLogin"];

    if (settings.autoLogin == nil)
        settings.autoLogin=@"N";
}

-(void)saveSettings:(SharedData *)d{
    settings=d;

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    [prefs setObject:settings.masterLocation forKey:@"masterLocation"];
    [prefs setObject:settings.masterPort forKey:@"masterPort"];
    [prefs setObject:settings.userName forKey:@"userName"];
    [prefs setObject:settings.passWord forKey:@"passWord"];
    [prefs setObject:settings.autoLogin forKey:@"autoLogin"];   
}

【问题讨论】:

    标签: ios settings nsuserdefaults


    【解决方案1】:

    哦。

    在 saveSettings 中,我错过了我的 [prefs synchronize];

    【讨论】:

    • 感谢自学者徽章。
    • “同步”而不是“同步”
    • 我不敢相信没有其他人注意到这一点。不错。
    • 我最喜欢的储蓄款待:D thnx
    【解决方案2】:

    制作样本:

    //Writing
    [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"anInt"];
    [[NSUserDefaults standardUserDefaults] setDouble:1.2 forKey:@"aDouble"];
    [[NSUserDefaults standardUserDefaults] setString:@"aString" forKey:@"aString"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    
    //Reading:
    
    int i = [[NSUserDefaults standardUserDefaults] integerForKey:@"anInt"]
    

    【讨论】:

      猜你喜欢
      • 2011-06-12
      • 1970-01-01
      • 2012-06-29
      • 2015-11-15
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      相关资源
      最近更新 更多