繁体   English   中英

在iOS中加载/保存设置

[英]load/save settings in iOS

我在AppDelegate中定义了以下两个过程。 saveSettings和loadSettings。 我在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"];   
}

卫生署。

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

使它成为样本:

//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"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM