我根据此Apple documentation page制作了默认设置的自定义plist 在SO的这个answer on question的帮助下。
这是我的app代理代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSString *defaultPrefsFile = [[NSBundle mainBundle] pathForResource:@"defaultSettings" ofType:@"plist"];
NSDictionary *defaultPreferences = [NSDictionary dictionaryWithContentsOfFile:defaultPrefsFile];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultPreferences];
// Override point for customization after application launch.
return YES;
}
我还制作了名为defaultSettings .plist
的plist,并在此处存储我的默认设置。
这是结构:
<dict>
<key>Sound</key>
<true/>
<key>Music</key>
<true/>
<key>Difficulty</key>
<integer>0</integer>
</dict>
在我的设置VC中,我设置了plist我的outlet并在值发生变化时存储到plist。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.soundSwitcher.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"Sound"];
....
self.difficultySelector.selectedSegmentIndex = [[NSUserDefaults standardUserDefaults] integerForKey:@"Difficulty"];
}
看起来没问题但是出口没有设置为我在属性列表中设置的默认值。
我也不能通过IBAction
方法
- (IBAction)switchSound:(UISwitch *)sender
{
[[NSUserDefaults standardUserDefaults] setBool:sender.isOn forKey:@"Sound"];
}
我做错了什么?
编辑: 我想提一下,如果我关闭设置View Controller然后再次打开它,设置会在我离开时保存。 (所以,事实上所有的工作)。但如果我重新启动我的应用程序,则所有设置都将被取消设置。
答案 0 :(得分:2)
在NSUserDefaults
中更改内容之后,您忘了写这个[defaults synchronize];