我開發了一個應用程序,它使用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了。」目前還不清楚,請解釋第二個版本的侷限性。 –