我知道有一些关于存储userDefaults的问题,所以每个人都可以使用。目前我在AppDelegate中有我的,它正在工作。但是,我现在想要根据用户首选项更新默认设置。
但是,当用户退出应用并再次启动时,它只会再次从头开始创建默认值。
#import "AppDelegate.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
NSUserDefaults *sharedPref = [NSUserDefaults standardUserDefaults];
[sharedPref setObject:@"Washington, DC" forKey:@"defaultLocation"];
//
return YES;
}
显然,每次应用程序打开时都会设置此选项,从而使用户选择过时。
如何设置默认值,然后让用户更改默认设置,然后在应用启动时覆盖?
由于
答案 0 :(得分:4)
你应该使用registerDefaults:那个
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// ...
[NSUserDefaults standardUserDefaults] registerDefaults:@{@"defaultLocation" : @"Washington, DC"}];
// ...
return YES;
}
答案 1 :(得分:1)
以下代码会检查应用是否已启动。它旨在取代-registerDefaults:
。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"setupApp"])
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:YES forKey:@"setupApp"];
[defaults setObject:@"Washington, DC" forKey:@"defaultLocation"];
[defaults synchronize];
}
return YES;
}
答案 2 :(得分:0)
NSUserDefaults
是整个应用程序可用的单例。您可以随时通过以下方式拨打电话:
[NSUserDefaults standardUserDefaults]
用户无法直接与其进行交互,您必须收集数据然后存储它。设置值:
[[NSUserDefaults standardUserDefaults] setObject:@"Some Value" forKey:@"MyKey"];
[[NSUserDefaults standardUserDefaults] synchronize]; // to save
用户默认值将在应用程序启动之间保持不变。
您必须小心设置对象,只能在用户默认值中设置属性列表类型。