gpt4 book ai didi

objective-c - NSUserDefaults 重置首次运行

转载 作者:行者123 更新时间:2023-12-01 17:42:58 29 4
gpt4 key购买 nike

我在 AppStore 中有一个使用 NSUserDefaults 的应用程序。一些默认设置是我在首次启动应用程序时继续设置的默认设置,然后允许用户稍后根据需要更改它们。所以,在我的 AppDelegate appDidFinishLaunchingWithOptions 我放:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

if (! [defaults boolForKey:@"notFirstRun"]) {

[defaults setBool:YES forKey:@"notFirstRun"];

[defaults setInteger:0 forKey:@"verseKey"];
[defaults synchronize];
}

我现在遇到的问题是我想在 NSUserDefault 类别中添加更多默认设置,所以我想让它看起来像这样:
 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

if (! [defaults boolForKey:@"notFirstRun"]) {

[defaults setBool:YES forKey:@"notFirstRun"];
NSString *smalltitle = @"4";
NSString *smallarticle = @"3";
[defaults setObject:smalltitle forKey:@"Title"];
[defaults setObject:smallarticle forKey:@"Article"];
[defaults setInteger:0 forKey:@"verseKey"];
[defaults synchronize];
}

我知道这会给那些已经下载该应用程序并且只是更新它的人带来问题。他们不会运行该代码,因为 notFirstRun Bool 已设置为 YES。关于我应该在这里做什么的任何想法?

最佳答案

正确的解决方案是不实际填充 NSUserDefaults使用默认值。相反,请使用 registerDefaults:方法。

在应用程序启动时,您执行以下操作:

NSUserDefaults *default = [NSUserDefaults standardUserDefaults];
[defaults registerDefaults:@{
@"Title" : @"4",
@"Article" : @"3",
@"verseKey" : @0
}];

就是这样。每次运行应用程序时调用它。这些默认值实际上并没有持久化。仅当键还没有显式值时才返回该值。您可以根据需要更新这些默认值,而不会影响任何现有值。

关于objective-c - NSUserDefaults 重置首次运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13545178/

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