dhr*_*hrm 0 cocoa-touch objective-c
我正在开发一个新版本的应用程序.在旧版本的应用程序中,某些内容已从Web下载到Cache-folder中.此内容在新版本中不再有效,因此我希望在新版本的应用程序启动时首次删除其中一些文件.
如何检查应用程序是否第一次启动?我可以使用NSUserDefaults存储指示,但是有更好的方法吗?
我所做的是检查应用程序是否第一次在didFinishLaunchingWithOptions:方法中启动,并将应用程序的当前版本存储在默认值中.这样做的原因是每次更新应用程序时,我都可以跟踪需要删除哪些文件,以及需要为该版本的应用程序存储哪些文件.以下是代码:
if (![[NSUserDefaults standardUserDefaults] boolForKey:kNOT_FIRST_LAUNCH]) {
NSLog(@"fresh install = %d", (int)[self checkForFreshInstall]);
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:kAPPLICATION_LAUNCHING_FIRST_TIME];
[[NSUserDefaults standardUserDefaults] synchronize];
} else {
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:kAPPLICATION_LAUNCHING_FIRST_TIME];
[[NSUserDefaults standardUserDefaults] synchronize];
}
Run Code Online (Sandbox Code Playgroud)
这是checkForFreshIntallMethod:
- (BOOL) checkForFreshInstall {
NSString *currentVersion = (NSString*)[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
NSString *prevVersion = (NSString *)[[NSUserDefaults standardUserDefaults] valueForKey:@"prevVersion"];
if (prevVersion == nil) {
// Starting up for first time with NO pre-existing installs (e.g., fresh
// install of some version)
[[NSUserDefaults standardUserDefaults] setValue:currentVersion forKey:@"prevVersion"];
// Save changes to disk
[[NSUserDefaults standardUserDefaults] synchronize];
return YES;
}
else if ([prevVersion intValue] < [currentVersion intValue]) {
// Starting up for first time with this version of the app. This
// means a different version of the app was alread installed once
// and started.
[[NSUserDefaults standardUserDefaults] setValue:currentVersion forKey:@"prevVersion"];
// Save changes to disk
[[NSUserDefaults standardUserDefaults] synchronize];
return NO;
}
return YES;
Run Code Online (Sandbox Code Playgroud)
}
如果您有任何疑问,请告诉我.
| 归档时间: |
|
| 查看次数: |
1036 次 |
| 最近记录: |