我开发了一个应用程序,它使用 Settings.bundle 来允许用户更改应用程序中的一些内容。
举个例子 :
我有一个带有键“firstName”的参数,DefaultValue 是“John”。用户可以在“设置”窗格中将“John”更改为“Bryan”并查看“Hello Bryan!” 在我的应用程序中。一皮!
如果用户更新我的应用程序之前没有删除它,当他再次启动应用程序时,文本“Hello Bryan!” 还在那里。这是正常的,因为MyApp.app/Library/Preferences/my.bundle.com.MyApp.plist
当用户更改数据时,它们将存储在此文件中,并将一直存储到用户从其设备中删除应用程序(不仅仅是更新)。
我的问题是,在我的应用更新后,我不希望用户看到“Hello Bryan!” 但只有在我决定时才使用 DefaultValue (John)。
为此,我考虑了这个解决方案:
NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSString* currentVersion = [infoDict objectForKey:@"CurrentSettingsVersion"];
NSString*storedVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"currentSettingsVersion"];
BOOL sameVersion = nil;
if([currentVersion isEqualToString:storedVersion]){
//No change keep preference
sameVersion = YES;
}else{
//Versions are different => erase prefs and set new currentSettingsVersion number
sameVersion = NO;
//Reset
[[NSUserDefaults standardUserDefaults] setValue:currentVersion forKey:@"currentSettingsVersion"];
}
当当前版本与存储版本不同时,我试图弄清楚如何重置此文件,但是否符合 Apple 规范?
MyApp.app/Library/Preferences/my.bundle.com.MyApp.plist
我知道这很奇怪,但我的客户不想在更新之前卸载应用程序。真正的情况是,在我的第一个应用程序版本中有一个 Settings.bundle,而在第二个版本中则没有。但是我们的应用程序将更改的设置保留在内存中,尽管不再有 Settings.bundle。
我希望你能理解;)这是一个非常奇怪的要求:)
佩比