如何设置NSUserDefault Keys的初始值?

Suz*_*Suz 42 user-experience plist nsuserdefaults ios

我想为我的NSUserDefault键设置一些初始值,以便应用程序的第一次运行具有一些合理的初始设置.我以为我在应用程序包.plist中运行了一个简单的方法来执行此操作,但现在我找不到它.有任何想法吗?

Ole*_*ann 70

你应该使用的registerDefaults方法NSUserDefaults.在包中准备包含默认首选项的plist文件,然后使用该plist注册默认值.

NSString *defaultPrefsFile = [[NSBundle mainBundle] pathForResource:@"defaultPrefs" ofType:@"plist"];
NSDictionary *defaultPreferences = [NSDictionary dictionaryWithContentsOfFile:defaultPrefsFile];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultPreferences];
Run Code Online (Sandbox Code Playgroud)

您必须在每次启动应用时执行此代码.它会将这些值添加到用户默认层次结构中的单独域中.每当您的应用程序的用户默认值未提供某个键的值时,NSUserDefaults将回退到此域并从那里检索该值.

  • "易失性存储位置"是什么意思?您必须在每次启动应用时执行此代码.它会将这些值添加到用户默认层次结构中的单独域中.每当您的应用程序的用户默认值不为某个键提供值时,"NSUserDefaults"将回退到该域并从那里检索该值. (4认同)

tha*_*h84 5

如果您有许多默认值,请使用ola的答案,否则这对一些参数很有用

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

if (![defaults boolForKey:USERDEFAULT_IS_INITIALIZED]) { 
    [defaults setBool:YES forKey:USERDEFAULT_IS_INITIALIZED];

    // Set initial values 
    ...

    [defaults synchronize];
}
Run Code Online (Sandbox Code Playgroud)