2015-03-08 73 views
-1

我正在使用HockeyApp和Ship.io將我的ios應用程序部署到每個構建版上的多個測試人員。在我的最新版本中,我更改了一些我保存到NSUserDefaults中的對象的數據類型,現在它崩潰了,因爲存儲在本地設備上的舊數據會與此更改發生衝突。當一個人刪除應用程序並從頭重新安裝(bc userdefaults被清除)時,此崩潰消失如何清除更新的應用程序上的NSUserDefaults

我想要某種清除邏輯,以便在人們更新到最新版本時清除NSUserDefaults。我怎樣才能做到這一點?

回答

2

我會檢查是否有舊密鑰存在,如果它不使用復位默認值:

NSString *domainName = [[NSBundle mainBundle] bundleIdentifier]; 
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:domainName]; 

(類型移動很抱歉,如果格式很爛)

1

這樣的事情呢?

-(void)removeNSUserDefaults { 


    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    [defaults removeObjectForKey:@「yourkey1」]; 
    [defaults removeObjectForKey:@「yourkey2」]; 
    //do this for all your keys.. 
    [defaults synchronize]; 

} 

剛剛從字典中刪除對象

+0

但我不想刪除每次用戶啓動應用程序。如果我這樣做,我只想在有人將應用程序更新到最新版本時執行此操作。任何關於邏輯的想法我都應該使用?也許讓一個全新的布爾鍵來跟蹤某人是否曾經遷移到新的應用程序? – 2015-03-08 18:09:52

+1

是的,「首次啓動」的布爾鍵將是這樣做的一種方式 – Kex 2015-03-09 07:09:14

相關問題