Prevent state restoration on version upgrade
You always want to check which version of your app previously saved the state using iOS6's state saving and restoration, as screens/data/etc can change from version to version.
Instead of having conditional logic in the decode methods on your view controller, just add this to your AppDelegate to prevent restoration all together when the user just upgraded the app. This code uses the version number in your app's bundle.
#define kStateSavingPreviousVersion @"PreviousAppVersionNumber"
#define kVersionNumber @"CFBundleShortVersionString"
-(BOOL)application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder
{
//we don't want to restore if the state is from a previous app
NSString *appVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:kVersionNumber];
NSString *previousAppVersion = [coder decodeObjectForKey:kStateSavingPreviousVersion];
return [previousAppVersion isEqualToString:appVersion];
}
-(BOOL)application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder
{
NSString *appVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:kVersionNumber];
[coder encodeObject:appVersion forKey:kStateSavingPreviousVersion];
return YES;
}
Written by Curtis Herbert
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Ios
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#