我正在寫我的第一個可可應用程序。在哪裏申報和初始化NSUserDefaults之類的?
現在,每當我需要NSUserDefaults
時,我都會初始化該類的一個對象,並在本地範圍內使用它。
這有點乏味。所以我想知道在哪裏我應該把NSUserDefaults
聲明和初始化,以便它可能適用於我所有的Application Delegate
方法?
我正在寫我的第一個可可應用程序。在哪裏申報和初始化NSUserDefaults之類的?
現在,每當我需要NSUserDefaults
時,我都會初始化該類的一個對象,並在本地範圍內使用它。
這有點乏味。所以我想知道在哪裏我應該把NSUserDefaults
聲明和初始化,以便它可能適用於我所有的Application Delegate
方法?
嘗試使用用戶默認
[NSUserDefaults standardUserDefaults];
無論您在何處需要調用默認值,都沒有任何問題。無論如何,這是一個單身人士。
如果你把它放到你的應用程序代理,你會只是調用到,同樣的方式來獲得NSUserDefaults的。
如果您想初始化您的應用程序的默認值,那麼您應用程序委託的方法爲+initialize
。
I'm initialising an object of the class and use it in the local scope.
它並不需要在所有的時候你應該簡單地使用這個單。如果你想在UserDefaults中保存某些東西,cocoa會爲你提供一個共享的實例/ Singleton。
每當你需要更新您保存的價值,你叫[NSUserDefaults standardUserDefaults]
和使用它,只有一個實例將被保存爲您服務。
[[NSUserDefaults standardUserDefaults] setObject:yourObject forKey:@"yourKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
一個很好的方式做用戶默認值,是創建自己的PFXDefaults
類(你最喜歡的前綴替換PFX
),其中有用於訪問和不斷變化的,你關心的值的方法。這允許你寫
[[PFXDefaults sharedDefaults] setUserName:@"Nate"];
而不是
[[NSUserDefaults] setObject:@"Nate" forKey:@"userName"];
這是很方便的使這個類的前綴,或者,除非是,在您的應用程序可見(在.h
文件中聲明)財產代表。
的PFXDefaults
界面看起來像
@interface PFXDefaults : NSObject
@property (nonatomic) NSString *userName;
@end
和實施將看起來像
static NSString * const PFXDefaultUserNameKey = @"PFXDefaultUserNameKey";
@implementation PFXDefaults
- (void)setUserAge:(NSString *)userName
{
[[NSUserDefaults standardUserDefaults] setObject:userName forKey:PFXDefaultUserNameKey];
}
- (NSInteger)userAge
{
return [[NSUserDefaults standardUserDefaults] stringForKey:PFXDefaultUserNameKey];
}
@end
就我個人而言,我會將此功能放在類擴展中。 – sbooth
使用NSUserDefaults的上一類肯定是另一種選擇 - 而且避免了引進新單的幽靈。 –
不要ALLOC-INIT'NSUserDefaults'可言。使用共享實例('[NSUserDefaults standardUserDefaults]')。 – 2012-12-24 12:31:40
爲什麼不使用sharedUserDefaults? –