iPhone настроек nsuserdefaults к nil, когда приложение закрыто или в фоновом режиме

StackOverflow https://stackoverflow.com/questions/3642856

  •  30-09-2019
  •  | 
  •  

Вопрос

Я хочу устранить все переменные, сохраненные во всех полях NsuserDefaults, когда приложение закрыто или работает на заднем плане в течение определенного количества времени - скажи 5 минут.

Я пытался добавить линию в приложение делегат ApplicationDIDFINISHLAUCHING, который выглядит так:

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 для определенного ключа.

Надеюсь, поможет.

Другие советы

Может быть, вы должны использовать ApplicationDidenterBackgroundground :. Проверить это Страница Apple DOC.

Я бы сделал следующее: в деле делегата - (void)applicationWillResignActive:(UIApplication *)application Из Uiacplication я бы сохранил временную метку, когда приложение вошло в фоновом режиме. В этом случае вам не нужно проверять, идет ли приложение на фоновом режиме или, если он просто прерывается, например, SMS, но пользователь ударит отменить и продолжает использовать приложение.

Когда приложение снова запускается, реализуйте код в другом делегатере метод UIAPLING - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions Чтобы определить, как долго вы были неактивны и протрите userdefaults или не в зависимости от продолжительности.

Для получения дополнительной информации о приложении становится неактивным и отменив проверку этого документа документации Apple http://developer.apple.com/iphone/Library/documentation/iphone/coneplectual/iphoneoSprammammingGuide/iphoneAsprammingGuide/COREAP.ML#//APHLEAPLEP/DOC/UID/TP40007072-CH3-SW10.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top