2012-01-02 5 views
1

В настоящее время я работаю над обновлением файла с удаленного сервера. Я могу загрузить файл и сохранить его в каталоге документов. В файле есть тег «Last-Modified», и я использую его, чтобы проверить, нужно ли обновлять файл. Но мой вопрос: как сохранить строку с тегом для последующего использования? Позже я хочу сравнить сохраненную строку с другой строкой с текущим тегом Last-Modified. Если они равны, файл не нужно обновлять, но если они не равны, я загружу новый файл.Как сохранить строку для последующего использования?

Извините за плохой английский, исправьте меня и любую помощь приветствуем. Некоторое время боролись с этим!

EDIT:

NSDictionary *metaData = [test allHeaderFields]; 

//NSLog(@"%@", [metaData description]); 

lastModifiedString = [metaData objectForKey:@"Last-Modified"]; 

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults]; 
[standardUserDefaults setObject:lastModifiedString forKey:@"LastModified"]; 
[standardUserDefaults synchronize]; 

NSString *savedString = [[NSUserDefaults standardUserDefaults] stringForKey:@"LastModified"]; 

if (![lastModifiedString isEqualToString:savedString]) 
{ 
    [self downloadNewFile]; 
} 

Скачать ссылку на файлы: Archive.zip

ответ

2

Использование NSUserDefaults или основных данных сохраняться значение.

EDIT:

Это не работает, потому что вы сохраняете новое значение перед извлечением его. Вам нужно переместить

NSString *savedString = [[NSUserDefaults standardUserDefaults] stringForKey:@"LastModified"]; 

выше

[standardUserDefaults setObject:lastModifiedString forKey:@"LastModified"]; 

Теперь вы будете сравнивать новое значение файла от старого значения дефолтов пользователя.

+0

@Peter_DeWeese Я пробовал использовать NSUserDefaults, но это не работает для меня. Я добавил свой код к вопросу, если вы хотите посмотреть. Благодаря! – Jacob

+0

В следующий раз просто вырежьте критическую часть и включите ее в свой пост. Я сделаю это для вас прямо сейчас, а затем отредактирую свой ответ. –

+0

Да, спасибо, спасибо! – Jacob

0

Вы говорите, что хотите сравнить последние измененные даты, чтобы узнать, одинаковы ли они?

Я думаю, что лучший способ сделать это - сохранить дату (как строку) в Property List. Если вы создаете приложение для iPhone, вы можете создать список свойств со строкой с кодом ниже. Этот код проверяет, существует ли файл, и что он делает, он читает его, а если нет, он создает один и записывает на него.

// Get the path to the property list. 
NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *pathToPlist = [[pathArray objectAtIndex:0] stringByAppendingPathComponent:@"yourfilename.plist"]; 
// Check whether there is a plist file that already exists. 
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:pathToPlist]; 

if (!fileExists) { 
    // There is no file so we set the file up and save it. 
    NSMutableDictionary *newDict = [NSMutableDictionary dictionaryWithCapacity:1]; 
    [newDict setObject:yourStringWithTheLastModifiedDate forKey:@"lastModified"]; 
    [newDict writeToFile:pathToPlist atomically:YES]; 
} 

} else { 
    // There is already a plist file. You could add code here to write to the file rather than read from it. 
    // Check the value of lastModified. 
    NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithContentsOfFile:pathToPlist]; 
    NSString *lastModifiedDate = [persistentNonResidentData objectForKey:@"lastModified"]; 

    // Add your own code to compare the strings. 
} 

Возможно, вы неправильно поняли свой вопрос, и возможно, это не то, что вы ищете вообще.

+0

Спасибо за ответ, но это было не совсем то, что я искал. – Jacob

Смежные вопросы