在 iOS 中加载/保存设置
Posted
技术标签:
【中文标题】在 iOS 中加载/保存设置【英文标题】:load/save settings in 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"];
【问题讨论】:
【参考方案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"]
【讨论】:
以上是关于在 iOS 中加载/保存设置的主要内容,如果未能解决你的问题,请参考以下文章
在 C# 中加载和保存 ComboBox、NumericUpDown、HexUpDown 中的值
Google Adsense 广告未在 UIWebView 中加载