Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS中加载/保存设置_Ios_Settings_Nsuserdefaults - Fatal编程技术网

在iOS中加载/保存设置

在iOS中加载/保存设置,ios,settings,nsuserdefaults,Ios,Settings,Nsuserdefaults,我在AppDelegate中定义了以下两个过程。保存设置和加载设置。单击save按钮后,我将在AppDidFinishLaunching方法中调用我的loadSettings过程,并在我的settings视图中调用saveSettings过程 这两种方法似乎都是在正确的时间、正确的次数(一次)和使用正确的数据调用的。我的设置对象获得了正确的数据,但数据似乎没有实际保存。当我运行加载代码时,生成的变量返回为空(不是nil) 我尝试将相同的加载代码放在不同的视图中,效果很好,但由于某些原因,我在ap

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

这两种方法似乎都是在正确的时间、正确的次数(一次)和使用正确的数据调用的。我的设置对象获得了正确的数据,但数据似乎没有实际保存。当我运行加载代码时,生成的变量返回为空(不是nil)

我尝试将相同的加载代码放在不同的视图中,效果很好,但由于某些原因,我在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"];   
}
Doh

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

谢谢你的自学徽章,“同步”而不是“同步”,我真不敢相信没有其他人发现了。不错。我最喜欢的节俭款待:D thnx