gpt4 book ai didi

iphone - 在哪里初始化 iPhone 应用程序默认值

转载 作者:行者123 更新时间:2023-12-03 19:05:04 24 4
gpt4 key购买 nike

我刚刚开始使用首选项 Pane 来让用户在我的 iOS 应用程序中自定义一些设置,并且创建 Settings.bundle 并从中访问信息非常容易。我的问题是我在 Apple 文档中读到设置应该以编程方式初始化:

It is recommended that you register any default preference values programmatically at launch time in addition to including them in your settings bundle property lists. For newly installed applications, default preference values from the application’s settings bundle are not set until the Settings application runs. This means that if the user runs your application before running Settings, the default values specified in your settings bundle will not be available. Setting such values programmatically at launch time ensures that your application always has appropriate values. To register default values programmatically, use the registerDefaults: method of the NSUserDefaults class.

此初始化是在应用程序的哪个位置完成的,如何确保我不会覆盖用户提供的值?这是在应用程序委托(delegate)的某种方法中处理的吗?

最佳答案

在尝试访问存储在 NSUserDefaults 中的值之前,您应该注册默认值。您可以在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中执行此操作。
注册默认值的速度很快,因此无需对此进行优化。只需在应用程序启动时执行此操作即可。

我将用户默认值存储在 plist 中并注册此列表的内容,如下所示:

NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"DefaultUserDefaults" ofType:@"plist"]];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];

如果您像这样注册默认值,则不必担心会覆盖用户提供的值。NSUserdefaults 使用“域”来存储其值。如果您注册默认值,它们将存储在注册域中。如果用户存储值,那么这些值将存储在应用程序域中。

如果您尝试从 NSUserdefaults 获取值,它将查看该值是否存在于应用程序域中,如果不存在,则从注册域中获取值。

<小时/>

编辑:

plist editor

您可以像这样访问这些值(或者更好的是,存储在 nsuserdefaults 中的值,以及作为后备的值),如下所示:

NSInteger minutesToWait = [[NSUserDefaults standardUserDefaults] integerForKey:@"MinutesToWait";
NSString *urlString = [[NSUserDefaults standardUserDefaults] stringForKey:@"DefaultURLStr"];

plist 只是带有键和值的 NSDictionary 的另一种表示形式。该键与您用于访问用户默认值的键相同,该值是您的默认值。非常简单。
如何创建字典并不重要。您也可以用代码来完成。

关于iphone - 在哪里初始化 iPhone 应用程序默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4843255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com