我开发了一个应用程序,它使用Settings.bundle来允许用户更改应用程序中的某些内容。iOS持久数据/设置。捆绑
对于为例:
我受够了关键的“名字”,将默认值是“约翰”的参数。 用户可以在“设置”窗格中通过“Bryan”更改“John”,并参阅“Hello Bryan!”在我的应用程序。一杯!
如果用户更新我的应用程序之前没有删除它,当他再次启动应用程序时,文本“Hello Bryan!”还在那儿。这是正常的,因为MyApp.app/Library/Preferences/my.bundle.com.MyApp.plist
当用户更改数据时,它们被存储在这个文件中,并且将被存储直到用户从他的设备上移除应用程序(而不仅仅是更新)。
我的问题是,我的应用更新后,我不希望用户看到“Hello Bryan!”但是只有在我决定的时候才会使用DefaultValue(约翰)。
要做到这一点,我认为这个解决方案:
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"];
}
在目前的版本是从存储的版本不同,我揣摩不我怎么能重置此文件,但它是否可以与苹果的规格? MyApp.app/Library/Preferences/my.bundle.com.MyApp.plist
我知道这很奇怪,但我的客户端不希望在更新它之前卸载应用程序。 真正的情况是,在我的第一个应用程序版本中有一个Settings.bundle,而在第二个版本中没有。但是,尽管没有Settings.bundle,我们的应用程序仍将更改的设置保留在内存中。
我希望你明白,)这是一个非常奇怪的要求:)
Pebie
“真正的情况是,在我的第一个应用程序的版本有一个Settings.bundle,并在第二个版本没有。但是我们的应用程序保持更改的设置在内存中,尽管没有Settings.bundle了。”目前还不清楚,请解释第二个版本的局限性。 –