-2

同じビューコントローラー クラス内で、2 つの NSUserDefaults を使用しています。1 つは UISwitch 状態を保存するため、もう 1 つは DatePicker 値を保存するためです。これが私のコードです:

-(IBAction) switchValueChanged
{
    NSString *value = @"ON";

    NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
    if (switch1.on)
    {
        value = @"OFF";
        [userPreferences setObject:value forKey:@"stateOfSwitch"];     
        [switch1 setOn:YES animated:YES];
    }
    else
    {
        [userPreferences setObject:value forKey:@"stateOfSwitch"];

        [switch1 setOn:NO animated:YES];
        [[UIApplication sharedApplication] cancelAllLocalNotifications];
    }
}

- (IBAction)scheduleTime
{
    NSDate *pickerTime=datePicker.date;
    [[NSUserDefaults standardUserDefaults] setObject:pickerTime forKey:@"setPickerTime"];
    [[NSUserDefaults standardUserDefaults] synchronize]; 
}

問題は、日付ピッカーの nsuserdefault のみが機能していて、他の 1 つが機能していないことです。

4

2 に答える 2

2

NSUserDefaults は、デフォルト値が必要になるたびにユーザーのデフォルト データベースを開く必要がないように、情報をキャッシュします。定期的に自動的に呼び出される synchronize メソッドは、メモリ内キャッシュをユーザーのデフォルト データベースと同期させます

[userPreferences synchronize];最初の関数の if/else ブロックの後に呼び出しを追加して、再試行してください。

于 2013-06-26T09:48:47.463 に答える
0

このコードを試してください:

if (switch1.on)
    {
        value = @"OFF";
     [[NSUserDefaults standardUserDefaults] setObject:value forKey:@"stateOfSwitch"];

        [switch1 setOn:YES animated:YES];
    }
    else
    {
       [[NSUserDefaults standardUserDefaults] setObject:value forKey:@"stateOfSwitch"];
        [switch1 setOn:NO animated:YES];
        [[UIApplication sharedApplication] cancelAllLocalNotifications];
    }
于 2013-06-26T10:00:33.580 に答える