我听说我需要使用registerDefaults:加载NSUserDefaults,如果用户从未更改过应用程序设置。如何使用registerDefaults:正确地加载我的默认设置?
在我的AppDelegate我使用下面的代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
// Load default defaults
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Defaults" ofType:@"plist"]]];
[[NSUserDefaults standardUserDefaults] synchronize];
// Add the view controller's view to the window and display.
[window addSubview:viewController.view];
[window makeKeyAndVisible];
return YES;
}
我抄我的设置Root.plist捆绑到我的项目的ressources文件夹,并在其更名为Defaults.plist
现在我的视图控制器的viewDidLoad方法我使用下面的代码来加载设置:
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
if ((([[defaults objectForKey:kToggleSwitch] isEqualToString:@"Enabled"]) ? YES : NO)) {
//Do Stuff
//BTW i'm using strings for the True/False the values of the ON/OFF positions of the UISwitch
}
即使这样做,我的设置包的Root.plist中存储的默认设置也不会被加载。他们加载的唯一方法是,如果用户真正进入iPhone设置,并只是查看我的应用程序的设置页面。
很明显,我在这里做错了什么人可以帮我一把。顺便说一下我使用的iOS 4.1
什么是你Defaults.plist文件? – jasongregori 2012-02-23 02:59:22
它应该是一个kToggleSwitch设置为默认值的字典。 – jasongregori 2012-02-23 03:00:36