Очистка NSUserDefaults после указанного периода времени iPhone - PullRequest
2 голосов
/ 13 марта 2012

Я создал объект NSUserDefaults, он будет обновляться с новым значением всякий раз, когда произойдет четное.То, что я хочу (согласно моему требованию приложения), должен очищаться объект каждые 7 дней.Например, если 1-й раз, когда NSUserDefaults обновляется сегодня так точно через 7 дней, метод должен работать и очищать NSUserDefaults.Таким образом, новые значения будут назначаться с этого момента в течение следующих 7 дней.

Возможно ли это в target-c?

Ответы [ 2 ]

4 голосов
/ 13 марта 2012

да .. сохранить NSDate (текущую дату) как объект в NSUserdefaults.

При каждом запуске вашего приложения .. получить дату по умолчанию и сравнить ее с текущей датой..

Если интервал составляет более 7 дней (для получения результата вам придется выполнить математические вычисления)

, затем установите для объекта значение nil

, используя

[defaults setNilforKey: ];
2 голосов
/ 13 марта 2012

Что вы можете сделать, это сохранить объект NSDate.Затем каждый раз, когда приложение запускается (или чаще), проверяйте, составляет ли разница времени между тогда и сейчас 7 дней.

const NSString *kFirstLaunchDateKey = @"firstLaunchDate";
NSDate *firstLaunchDate = [[NSUserDefaults standardUserDefaults] objectForKey:kFirstLaunchDateKey];

//  If this is the first time the app has been launched we record right now as the first time the app was launched.
if (!firstLaunchDate) {
    [[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:kFirstLaunchDateKey];
    return;
}

NSTimeInterval *diff = abs([firstLaunchDate timeIntervalSinceNow]);
if (diff > 60 * 60 * 24 * 7) {
//      Seven days have passed since the app was first launched. 
//      Display the rate button.
}

Если это вызов

- (void)removePersistentDomainForName:(NSString *)domainName

С вашим приложениемидентификатор пакета в качестве параметра.

Из документации Apple:

domainName Домен, ключи и значения которого вы хотите.Это значение должно быть равно идентификатору пакета вашего приложения.

...