如何在用户更新新版本时维护应用程序设置

时间:2012-02-17 09:27:28

标签: iphone ios xcode ipad

当我们更新应用程序时,应在更新到较新版本后保留旧版本中用户选择的设置。

让我用一个简单的例子解释一下:

我的应用版本1.0的开关默认为ON,但用户可以设置为OFF。在App Store中,我将发布下一个版本 - 1.1 - 进行一些修改,但它也有相同的开关。当用户从设备更新时,开关值应保持关闭状态。

我如何能够以您宝贵的意见回复我...

提前完成了......

5 个答案:

答案 0 :(得分:2)

您只需使用NSUserDefaults

即可

App 1.1可以轻松阅读App 1.0所写的内容。

答案 1 :(得分:1)

当您将应用更新到较新版本时,UserDefault没有更改(如果不删除应用)。 然后我们要做的是检测您的应用是否更新到更新版本。我在我的应用程序中做的是在UserDefault中维护一个变量,如“CurrentAppVersion”,然后当app启动时,我检查从app Bundle获取的currentVersion,如果它们有差异,那么我将我的设置迁移到新版本并更新“CurrentAppVersion”也是一个新版本。

参考: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html

NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
NSString *currentAppVersion = [userDefault objectForKey:@"CurrentAppVersion"];

NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
NSLog(@"current version: %@, appversion: %@", currentAppVersion, appVersion);

if ([currentAppVersion isEqualToString:appVersion] == NO) {
    // Your app has just updated to new version, migrate your app settings.
} else {
    // NO, do nothings with your app settings.
}

希望它对你有所帮助,:)。

答案 2 :(得分:0)

应用程序更新后,Application Documents目录和Library目录中的内容不会更改。所以你应该做的就是将设置(比如字符串“SWITCH:YES”)写入Documents目录,就像

一样
[string  writeToFile:<#(NSString *)#> atomically:<#(BOOL)#> encoding:<#(NSStringEncoding)#> error:<#(NSError **)#>];

请参阅此帖子Retaining data after updating application

答案 3 :(得分:0)

您的1.1版本只需要阅读1.0版本编写的已保存用户设置。这是将版本控制机制放在保存的用户数据中的一个原因,这是一个好主意,使这种类型的升级变得简单。

答案 4 :(得分:0)

肯定你将你的开关值保存在你的第一个版本的某个位置,这样你就可以得到它并在下一个版本中应用它...对我来说,当我对应用程序进行更新时,我通常会在其中构建一个向后可计算性类我检索所有用户设置和内容,并在应用程序第一次运行时调用它,然后在新版本上应用旧设置。祝你好运