親愛なる専門家と友人へ
こんにちは、私は一日中これをダウンさせようとしていますが、私が試したことは何もうまくいかないようです. 基本的に、NSDefaultを使用して文字列の配列(最大:20、重いものは何もない)を保存したいと思います。保存し、正常にロードしますが、マイナスボタンを押して実際のデバイスでアプリを強制終了したときはそうではありません。iPhone 4gs (iOS 6) でテストしました。
試してみ
ましたが、うまくいきませんでした。
[[NSUserDefaults standardUserDefaults] synchronize];
in both
applicationWillTerminate:(UIApplication *)application
and
applicationDidEnterBackground:(UIApplication *)application
注: NSLog から、実際のデバイスのバックグラウンドでアプリケーションを強制終了しない限り、NSDefault から正常に値を取得しています。
誰かが理由を知っていますか?よろしくお願いします。サンプルとともに引用してください。
========================= 編集 (コードの追加):
より明確になり、誰かが本当に私をここで助けてくれることを期待して、いくつかのコードを追加しています。
前もって感謝します。何らかのアクション、その後
self.count = [NSNumber numberWithInt:[self.count intValue] + 1];
count is a NSNumber
NSData *count = [NSKeyedArchiver archivedDataWithRootObject:self.count];
[[NSUserDefaults standardUserDefaults] setObject:count forKey:@"count"];
[[NSUserDefaults standardUserDefaults] synchronize];
arrayForSavedKey is a NSMutableArray
[[NSUserDefaults standardUserDefaults] synchronize];
NSData *array = [NSKeyedArchiver archivedDataWithRootObject:self.arrayForSavedKey];
[[NSUserDefaults standardUserDefaults] setObject:array forKey:@"arrayForSavedKeys"];
両方:
applicationWillResignActive:(UIApplication *)application
applicationWillEnterBackground:(UIApplication *)application
次の行を追加しようとしました [[NSUserDefaults standardUserDefaults] synchronize]; データを取得するために、次のように呼び出してクラス A のメソッドを呼び出すデリゲートがあります。
NSData *savedKeys = [[NSUserDefaults standardUserDefaults] objectForKey:@"arrayForSavedKeys"];<br>
NSMutableArray *array = [[NSMutableArray alloc] initWithArray:[NSKeyedUnarchiver unarchiveObjectWithData:savedKeys]];<br>
self.arrayForSavedKey = [[NSMutableArray alloc] initWithArray: array];<br>
(その中にはわずかな NSStrings しかありません)
出力を NSLOG すると、マイナス記号でアプリを強制終了しない限り、すべて問題ありません。(ただし、実際のデバイスでは、もちろん、NSLogからは何も見えません。アプリを強制終了すると、xCodeでもアプリの実行が停止するためです)
今日は一日中過ごして、頭がいっぱいです。助けてください。