2013-06-05 64 views
1

我使用了很多NSUserDefaults,我希望每次應用程序開始刪除它們,除了兩個對象,這是不知何故可能?如何刪除除兩個對象以外的所有NSUser默認值?

任何幫助表示讚賞

+3

如果每次應用程序啓動時將其刪除,爲什麼首先使用NSUserDefaults?只需保留你的AppDelegate屬性或單身。 –

+0

謝謝,但這就是我的做法 – stefanosn

+1

我建議重構應用程序的這一部分,看起來你正在使用'NSUserDefaults'來處理不斷變化或需要加載到內存中的東西。正如@HotLicks所述,解決方案將它們加載到AppDelegate中。 – swiftcode

回答

2

我假設你知道你想保留哪兩個物體?如果是這種情況,請使用以下代碼:

id obj1 = [[NSUserDefaults standardUserDefaults] [email protected]"keyForObj1"]; 
id obj2 = [[NSUserDefaults standardUserDefaults] [email protected]"keyForObj2"]; 

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

[[NSUserDefaults standardUserDefaults] setObject:obj1 forKey:@"keyForObj1"]; 
[[NSUserDefaults standardUserDefaults] setObject:obj2 forKey:@"keyForObj2"]; 
+0

謝謝卡梅隆這是我需要的代碼,雖然我錯了使用NSUserDefaults。謝謝大家告訴我你的建議! – stefanosn

1

您需要跟蹤的關鍵自己,並刪除他們推出相關的對象。更重要的是,雖然:爲什麼你要將數據存儲在NSUserDefaults中,你只需要通過應用程序的單次運行來保存數據呢?這類數據應該可以保存在內存中。

+0

這是我如何做到這一點,我需要找到一個解決方案,而不是再次編寫代碼:) – stefanosn

1

您可以將這兩個項目保存在不同的密鑰下並在ViewDidLoad中添加到代碼中。 讓我知道實際問題。

+0

問題是,當試圖檢索或保存到nsuserdefaults時,會降低我的應用程序的速度。這發生在使用我的應用程序幾天後。 – stefanosn

+0

@stefanosn - 然後不要使用NSUserDefaults!你在濫用它。 –

+0

使用Plist或核心數據然後進行簡單持久 – Alex

相關問題