iPhoneがアプリが閉じられているときまたはバックグラウンドでnsuserdefaultsをNILに設定する
-
30-09-2019 - |
質問
アプリが閉じたりバックグラウンドで実行されたりするたびに、5分などのバックグラウンドで閉じたり実行されたりするたびに、nsuserdefaultsのすべてのフィールドに保存されたすべての変数を排除したいと思います。
このように見えるApplicationDidfinishlaunchingのアプリ代表に行を追加しようとしました。
if (UIApplicationStateBackground == TRUE) {
NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];
[profiles setObject:nil forKey:@"name1"];
[profiles synchronize];
}
また、この部分だけをApplicationWillTerminateに追加しました。
NSUserDefaults *profiles = [NSUserDefaults standardUserDefaults];
[profiles setObject:nil forKey:@"name1"];
[profiles synchronize];
これが機能していないようであり、「5分間のアプリケーションがバックグラウンドにある場合、nsuserdefaults変数を削除した場合」の条件を設定する方法がわかりません。
解決
オブジェクトをnilに設定する代わりに削除することをお勧めします。
- (void)removeObjectForKey:(NSString *)defaultName;
nsuserdefaultsの通常の動作は、クエリに一致するキーがない場合にnilを返すことです。そのため、同じルールに従い、特定のキーにnilを保存しない方が良いと思います。
それが役に立てば幸い。
他のヒント
たぶん、applicationdidenterbackground:を使用する必要があります。チェックアウト これ Apple Docページ。
私は次のことをします:デリゲートコールで - (void)applicationWillResignActive:(UIApplication *)application
uiapplicationの場合、アプリケーションがバックグラウンドに入ったときにタイムスタンプを保存します。この場合、アプリケーションがバックグラウンドに進んでいるかどうか、またはEGによって中断されたばかりであるかどうかを確認する必要はありませんが、ユーザーはキャンセルを押してアプリケーションを使用して続行します。
アプリケーションが再び起動すると、別のデリゲートuiapplicationにコードを実装したとき - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
耐久性に応じてユーザーデフォルトを拭くかどうかを判断するために、期間に応じて。
アプリケーションの詳細については、非アクティブになり再開するには、Appleのドキュメントのこのドキュメントを確認してください http://developer.apple.com/iphone/library/documentation/iphone/conceptual/iphoneosprogrammingguide/coreapplication/coreapplication.html#//apple_ref/doc/uid/tp40007072-ch3-sw10