【发布时间】:2011-10-13 18:33:07
【问题描述】:
我正在创建一个应用程序,当应用程序首次启动时,我必须在其中创建一个 plist。稍后我将使用 plist 来存储用户稍后输入的详细信息。如何检测应用程序的首次启动?我正在试验 NSUserDefaults 但我认为我做错了什么。
【问题讨论】:
标签: iphone ios plist nsuserdefaults
我正在创建一个应用程序,当应用程序首次启动时,我必须在其中创建一个 plist。稍后我将使用 plist 来存储用户稍后输入的详细信息。如何检测应用程序的首次启动?我正在试验 NSUserDefaults 但我认为我做错了什么。
【问题讨论】:
标签: iphone ios plist nsuserdefaults
您可以使用 NSUserDefaults 来做到这一点。但请注意版本号。
执行以下操作:
NSString *bundleVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
NSString *appFirstStartOfVersionKey = [NSString stringWithFormat:@"first_start_%@", bundleVersion];
NSNumber *alreadyStartedOnVersion = [[NSUserDefaults standardUserDefaults] objectForKey:appFirstStartOfVersionKey];
if(!alreadyStartedOnVersion || [alreadyStartedOnVersion boolValue] == NO) {
[self firstStartCode];
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:YES] forKey:appFirstStartOfVersionKey];
}
选择器 firstStartCode 只会在第一次运行时为每个应用程序版本按时调用。
好吗?
【讨论】:
我喜欢使用 NSUserDefaults 来存储第一次运行的指示。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults objectForKey:@"firstRun"])
[defaults setObject:[NSDate date] forKey:@"firstRun"];
[[NSUserDefaults standardUserDefaults] synchronize];
您可以稍后对其进行测试...
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if([defaults objectForKey:@"firstRun"])
{
// do something or not...
}
取自:Best way to check if an iPhone app is running for the first time
【讨论】:
您可以使用以下内容:
-(void) firstLaunch {
//Code goes here
}
-(void) firstLaunchCheck {
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"didLaunchFirstTime"]) {
[[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"didLaunchFirstTime"];
[self firstLaunch];
}
}
【讨论】: