我正在使用HockeyApp和Ship.io將我的ios應用程序部署到每個構建版上的多個測試人員。在我的最新版本中,我更改了一些我保存到NSUserDefaults中的對象的數據類型,現在它崩潰了,因爲存儲在本地設備上的舊數據會與此更改發生衝突。當一個人刪除應用程序並從頭重新安裝(bc userdefaults被清除)時,此崩潰消失如何清除更新的應用程序上的NSUserDefaults
我想要某種清除邏輯,以便在人們更新到最新版本時清除NSUserDefaults。我怎樣才能做到這一點?
我正在使用HockeyApp和Ship.io將我的ios應用程序部署到每個構建版上的多個測試人員。在我的最新版本中,我更改了一些我保存到NSUserDefaults中的對象的數據類型,現在它崩潰了,因爲存儲在本地設備上的舊數據會與此更改發生衝突。當一個人刪除應用程序並從頭重新安裝(bc userdefaults被清除)時,此崩潰消失如何清除更新的應用程序上的NSUserDefaults
我想要某種清除邏輯,以便在人們更新到最新版本時清除NSUserDefaults。我怎樣才能做到這一點?
我會檢查是否有舊密鑰存在,如果它不使用復位默認值:
NSString *domainName = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:domainName];
(類型移動很抱歉,如果格式很爛)
這樣的事情呢?
-(void)removeNSUserDefaults {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:@「yourkey1」];
[defaults removeObjectForKey:@「yourkey2」];
//do this for all your keys..
[defaults synchronize];
}
剛剛從字典中刪除對象
但我不想刪除每次用戶啓動應用程序。如果我這樣做,我只想在有人將應用程序更新到最新版本時執行此操作。任何關於邏輯的想法我都應該使用?也許讓一個全新的布爾鍵來跟蹤某人是否曾經遷移到新的應用程序? – 2015-03-08 18:09:52
是的,「首次啓動」的布爾鍵將是這樣做的一種方式 – Kex 2015-03-09 07:09:14