0

NSUserDefaultsを使用して保存されたデータを保存しました。キーに何も保存されていない場合(アプリを初めて実行する場合)、デフォルトで0になるという印象を受けました。ただし、そうではないようです。

これが私が持っているものです:

保存する:

- (void)viewWillDisappear:(BOOL)animated
{
[[NSUserDefaults standardUserDefaults] setInteger:setbatteryHealthCalculated     forKey:@"healthValue"];

    [[NSUserDefaults standardUserDefaults] synchronize];

}

ロードするには:

- (void) viewWillAppear:(BOOL)animated
{
NSInteger setbatteryHealthCalculated = [[NSUserDefaults standardUserDefaults]     integerForKey:@"healthValue"];
}

保存値を確認するには:

- (IBAction)check{

    NSInteger setbatteryHealthCalculated = [[NSUserDefaults standardUserDefaults] integerForKey:@"healthValue"];


    if  (setbatteryHealthCalculated = 0) {

                [self performSelector:@selector(displayAlert) withObject:nil];

}
}
4

2 に答える 2

3
if  (setbatteryHealthCalculated = 0) {

えーと。する必要があります

if  (setbatteryHealthCalculated == 0)

比較演算子は、Cのような言語ではありませ==ん。=

元のコードはsetbatteryHealthCalculated何があっても0に設定されます。0は偽であるため、ifブランチは実行されず、アラートは表示されません。

また、元のコードには不均衡な中括弧があります。


ところで、setbatteryHealthCalculatedivarですか?はいの場合、その前のNSIntegerを削除します。それ以外の場合は、ivarをシャドウするローカル変数を宣言しています。

于 2010-04-01T20:49:18.623 に答える
2

アプリの起動中に呼び出しregisterDefaults:て、デフォルトのデフォルト値を設定します(言うのは厄介ですが、それが機能します)。デフォルトにアクセスするコードの前に呼び出す必要があります。ただし、NSUserDefaultsは、存在しないキーに対して0またはnilを返します。

于 2010-04-01T20:50:40.800 に答える