Приложение для iPhone с инкрементным вызовом текстового файла, работа с NSDate и NSUserDefaults - PullRequest
0 голосов
/ 13 февраля 2012

В настоящее время я кодирую приложение, которое вызывает текстовый файл из магазина, отображает его и затем увеличивает, чтобы следующий файл мог быть загружен при необходимости. Я получил базовый код для работы с помощью нажатия кнопки, однако я хочу, чтобы он мог вызывать текстовый файл только после того, как прошло 24 часа с того момента, как последний был загружен эффективно, и он обновлялся каждый день.

Я пытаюсь сделать это, используя NSDate и NSUserDefaults, чтобы сохранить предыдущий раз, когда был вызван файл, а затем сравнить его с текущим временем, если его приращение превысило 24 часа, и вызвать следующий.

Однако после попытки добавить вещи и изменить базовый код, приведенный ниже, я просто не могу понять, как заставить его работать. Я не знаю, только ли это потому, что у меня не было достаточно опыта и я недостаточно хорошо знаю язык, или я просто немного глуповат и упускаю что-то действительно простое.

Любая помощь будет принята с благодарностью.

NSDate *nowDate = [NSDate date];
[[NSUserDefaults standardUserDefaults] setObject:nowDate forKey:@"LastLoaded"];

NSDate *lastLoaded  = [[NSUserDefaults standardUserDefaults] objectForKey:@"LastLoaded"];

NSDate *checkDate = [NSDate dateWithTimeIntervalSinceNow:-24*60*60];
if([lastLoaded compare:checkDate] == NSOrderedAscending) {
    static int number = 1;
    NSString *filePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%i",number++] ofType:@"txt"];
    if (filePath) {
        NSString *textFromFile = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
        if (textFromFile) {
            textView.text = textFromFile;
        }
    }
}

1 Ответ

1 голос
/ 13 февраля 2012

В вашем коде есть ошибка.Вы не получаете дату последнего обновления из NSUserDefaults.Вы извлекаете текущую дату, так как перезаписываете LastUpdatedate с текущей датой во второй строке кода.

//NSDate *nowDate = [NSDate date];
//[[NSUserDefaults standardUserDefaults] setObject:nowDate forKey:@"LastLoaded"];

NSDate *lastLoaded  = [[NSUserDefaults standardUserDefaults] objectForKey:@"LastLoaded"];

//NSDate *checkDate = [NSDate dateWithTimeIntervalSinceNow:-24*60*60];
if ([lastLoaded timeIntervalSinceNow] < -24*60*60 ){
//Now you can update the NSUserDefaults
[[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"LastLoaded"];
//if([lastLoaded compare:checkDate] == NSOrderedAscending) {
static int number = 1;
NSString *filePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%i",number++] ofType:@"txt"];
if (filePath) {
    NSString *textFromFile = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
    if (textFromFile) {
        textView.text = textFromFile;
    }
}
}
...