0

スタックオーバーフローに関する同様の質問は、次の組み合わせをもたらしました。

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; [userDefaults setBool:switchState forKey:@"mySwitchValueKey"];

BOOL swichState = [userDefaults boolForKey:@"mySwitchValueKey"];

NSUserDefaultsを調べようとしていますが、これらのコードが何をするのか、プログラムのどこに配置するのかがわかりません。


誰かがどこに行く必要があるか教えてもらえますか?以下のコードが機能しないのはなぜですか?

- (void)viewDidLoad
{
    [super viewDidLoad];
    BOOL switchState = [[NSUserDefaults standardUserDefaults]  boolForKey:@"mySwitchValueKey"];
    if (switchState == YES) {
        [hard1ON setOn:TRUE];
    } else {
        [hard1ON setOn:FALSE];
    }
}

- (IBAction)switchValueChanged
{
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setBool:switchState forKey:@"mySwitchValueKey"];

    if (hard1ON.on) {
        [[NSNotificationCenter defaultCenter] postNotificationName:@"theChange" object:nil];
    } else {
        [[NSNotificationCenter defaultCenter] postNotificationName:@"theChange2" object:nil];
    }
}
4

2 に答える 2

1

これらの2つのステートメントは、のインスタンスを作成してから、アプリでinNSUserDefaultsを設定するために使用されます。switchStatestandardUserDefaults

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setBool:switchState forKey:@"mySwitchValueKey"];

switchStateこのステートメントの上の任意の場所でとして宣言する必要がありますBOOL switchState

このステートメントからBOOL swichState = [userDefaults boolForKey:@"mySwitchValueKey"];、boolValueがswichStateに読み戻されます。

上記のコードは、switchStateがクラスのローカルプロパティであると想定して、別のビューを変更、反転、または移動したときに呼び出されるメソッドに含まれている必要があります。

グローバルまたは共有の場合は、どこでもかまいません。最適な場所はですapplicationSholdTerminate:

于 2013-03-03T16:22:05.023 に答える
0
  • 最初の2行はデータを保存するためのものであるため、送信/保存ボタンイベントでは、この行を使用してデータを保存できます。または、スイッチの値が変更されるたびに保存できます。
  • 2行目は、保存されたデータを取得するためのものであるため、アプリケーションが再起動されたときにこれを使用できます。前回の起動時に保存されたデータを知ることができるように。そしてそれに応じて、コードを進めることができます。

詳細については、このリンクを確認してください。NSUserDefaultsに関する簡単な説明が表示される場合があります。

お役に立てれば。

于 2013-03-03T16:24:28.303 に答える