ユーザーがアプリ内のボタンを押すたびにインクリメントする変数を保存する必要があります。私はそれをやろうとしてNSUserDefaults
成功しませんでした。これが私が使用しているコードです:
[[NSUserDefaults standardUserDefaults] setInteger:i++ forKey:@"AppCount"];
しかし、これをログに出力すると、取得し続け0
ます。
どんな助けでも大歓迎です。
ユーザーがアプリ内のボタンを押すたびにインクリメントする変数を保存する必要があります。私はそれをやろうとしてNSUserDefaults
成功しませんでした。これが私が使用しているコードです:
[[NSUserDefaults standardUserDefaults] setInteger:i++ forKey:@"AppCount"];
しかし、これをログに出力すると、取得し続け0
ます。
どんな助けでも大歓迎です。
追加してみてください:
[[NSUserDefaults standardUserDefaults] synchronize];
毎回、整数の値を変更します。
Appleのドキュメントを引用します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];
Static NSUIInteger appCount=0を使用できます。関数でユーザーがタップすると、値appCount++が増加します。これにより、アプリ内の関数呼び出しの値が保持されます。アプリを閉じた後、ファイルに書き込みます。
- (void)viewDidLoad {
[super viewDidLoad];
countFirst= [[NSUserDefaults standardUserDefaults]integerForKey:@"Counter"];
countFirst++;
}
インクリメントしたいところならどこにでもこれを書いてください。
[[NSUserDefaults standardUserDefaults] setInteger:countFirst++ forKey:@"Counter"];