0

ユーザーがアプリ内のボタンを押すたびにインクリメントする変数を保存する必要があります。私はそれをやろうとしてNSUserDefaults成功しませんでした。これが私が使用しているコードです:

[[NSUserDefaults standardUserDefaults] setInteger:i++ forKey:@"AppCount"];

しかし、これをログに出力すると、取得し続け0ます。

どんな助けでも大歓迎です。

4

3 に答える 3

2

追加してみてください:

[[NSUserDefaults standardUserDefaults] synchronize];

毎回、整数の値を変更します。

Appleのドキュメントを引用しますsynchronize

永続ドメインへの変更をディスクに書き込み、変更されていないすべての永続ドメインをディスク上にあるものに更新します。

http://developer.apple.com/library/ios/DOCUMENTATION/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html#//apple_ref/occ/instm/NSUserDefaults/synchronize

したがって、この変更により、最終的なコードは次のようになります。

[[NSUserDefaults standardUserDefaults] setInteger:i++ forKey:@"AppCount"];
[[NSUserDefaults standardUserDefaults] synchronize];

編集:実際に考え直して、これを試してみてください:

問題は、i ++を使用していることで、アプリケーションが常にカウントを追跡できることを前提としていると思います。アプリケーションを再入力するたびに、リセットされます。

以下の作品、私はそれをテストしました。

if (![[NSUserDefaults standardUserDefaults] integerForKey:@"AppCount"]) {
    [[NSUserDefaults standardUserDefaults] setInteger:i forKey:@"AppCount"];
}else{
    [[NSUserDefaults standardUserDefaults] setInteger:[[NSUserDefaults standardUserDefaults] integerForKey:@"AppCount"] + 1 forKey:@"AppCount"];
}
    [[NSUserDefaults standardUserDefaults] synchronize]; 
于 2012-08-17T06:11:36.647 に答える
0

Static NSUIInteger appCount=0を使用できます。関数でユーザーがタップすると、値appCount++が増加します。これにより、アプリ内の関数呼び出しの値が保持されます。アプリを閉じた後、ファイルに書き込みます。

于 2012-08-17T06:01:03.863 に答える
0
- (void)viewDidLoad {

    [super viewDidLoad];

   countFirst= [[NSUserDefaults standardUserDefaults]integerForKey:@"Counter"];

    countFirst++;

}

インクリメントしたいところならどこにでもこれを書いてください。

[[NSUserDefaults standardUserDefaults] setInteger:countFirst++ forKey:@"Counter"];
于 2016-02-12T11:15:21.233 に答える