我将如何检查它是否是我的应用程序第一次启动,在我的应用程序NSUserDefaults
第一次打开时使用并运行一些代码?
4 回答
这应该为您指明正确的方向:
static NSString* const hasRunAppOnceKey = @"hasRunAppOnceKey";
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
if ([defaults boolForKey:hasRunAppOnceKey] == NO)
{
// Some code you want to run on first use...
[defaults setBool:YES forKey:hasRunAppOnceKey];
}
NSUserDefaults 的答案是我脑海中浮现的第一件事,但经过反思,我会提出另一个建议。更多的工作,但值得考虑。动机是:有时在对应用程序进行故障排除时,Apple 建议删除该应用程序的 plist 文件。这是一种相当普遍的故障排除技术。我建议将您的布尔值存储在您的 plist 文件中,而不是 NSUserDefaults 中。
免责声明:我只做 iOS 开发,所以我不确定 NSUserDefaults 和 plists 在 Mac 上是如何交互的,而且我不知道让你的 plist 存在于 ~/Library/Application\ Support/Preferences/ 中所涉及的一切com.mycompany.MyAppName.plist
无论如何,我想这需要一些代码,这些代码实际上可以创建一个“新鲜”的 plist(可能是你的包中模板文件的副本),如果它启动并且没有看到 plist,你的应用程序就会这样做。默认 plist 不应包含允许您的用户跳过“第一次”代码的标志,但如果他们之前打开过应用程序,然后删除 plist,他们应该恢复默认行为。
这是一个重要的行为,在可能的情况下支持,如果我们的应用给他们带来麻烦,可以帮助我们的用户。
if (![[NSUserDefaults standardUserDefaults] boolForKey:@"hasBeenLaunched"]) {
// Run code on the first launch only ...
[defaults setBool:YES forKey:@"hasBeenLaunched"];
}
您可以使用 NSUserDefaults 将布尔值、整数、对象保存到程序中,并在您打开程序时让它们可用。您可以使用“boolForKey”设置一个名为“hasBeenLaunched”的标志。默认情况下,该值在未设置时为 NO。一旦将其更改为 YES,则 if 条件中的代码将永远不会再次执行。
在您的主控制器类中,实现如下内容:
static NSString * const MDFirstRunKey = @"MDFirstRun";
@implementation MDAppController
+ (void)initialize {
NSMutableDictionary *defaults = [NSMutableDictionary dictionary];
[defaults setObject:[NSNumber numberWithBool:YES] forKey:MDFirstRunKey];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaults];
// the following if on Mac and is necessary:
[[NSUserDefaultsController sharedUserDefaultsController] setInitialValues:defaults];
}
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
BOOL firstRun = [[[NSUserDefaults standardUserDefaults]
objectForKey:MDFirstRunKey] boolValue];
if (firstRun) {
// do something
[[NSUserDefaults standardUserDefaults] setObject:
[NSNumber numberWithBool:NO] forKey:MDFirstRunKey];
} else {
// do something else
}
}
@end
在创建它所在的+initialize
类的实例之前调用类方法;换句话说,它很早就被调用,是设置默认值的好地方。
有关详细信息,请参阅首选项和设置编程指南:注册您的应用程序的默认首选项。