-1

私は最初のCocoaアプリを書いています。

今のところ、が必要になるたびNSUserDefaultsに、クラスのオブジェクトを初期化し、ローカルスコープで使用しています。

これは少し面倒です。だから私はそれが私のすべてのメソッドNSUserDefaultsで利用できるように宣言と初期化をどこに置くべきか疑問に思っていますか?Application Delegate

4

4 に答える 4

3

ユーザーのデフォルトを使用しようとするときは、単にこのシングルトンを使用する必要があります

[NSUserDefaults standardUserDefaults];
于 2012-12-24T12:32:33.367 に答える
1

必要な場所でデフォルトを呼び出すことには何の問題もありません。とにかくシングルトンです。

これをアプリデリゲートに入れると、NSUserDefaultsを取得するために同じ方法で呼び出すことになります。

アプリのデフォルトを初期化する場合、それを行う場所は+initializeアプリデリゲートのメソッドです。

于 2012-12-24T12:31:19.863 に答える
0

I'm initialising an object of the class and use it in the local scope.

全く必要ありません。UserDefaultsに何かを保存したい場合、cocoaはその共有インスタンス/シングルトンを提供します。

保存した値を更新する必要があるときはいつでも、それを呼び出し[NSUserDefaults standardUserDefaults]て使用すると、1つのインスタンスのみが保存されます。

[[NSUserDefaults standardUserDefaults] setObject:yourObject forKey:@"yourKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
于 2012-12-24T12:38:08.830 に答える
0

ユーザーのデフォルトを実行する良い方法は、気になる値にアクセスして変更するためのメソッドを持つ独自のクラスを作成することです(お気に入りのプレフィックス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
于 2012-12-24T12:47:47.007 に答える