Как установить attributeOfItemAtPath (например, дату / время изменения) на iPhone - PullRequest
7 голосов
/ 09 мая 2011

Я знаю, что могу использовать attributesOfItemAtPath для получения времени / даты изменения файла среди прочего ... но есть ли способ УСТАНОВИТЬ дату / время изменения файла?

Я смотрелна Как программно установить время изменения файла? но, похоже, это не применимо.

Причина, по которой я спрашиваю, заключается в том, что я использую http://allseeing -i.com / ASIHTTPRequest / (как показано ниже) для получения файла ... однако метка времени не сохраняется так же, какВремя последнего изменения на сервере.Я хочу использовать заголовок Last-Modified, чтобы установить дату / время загруженного файла, чтобы я мог сохранить загруженное время в моей системе таким же, как и на сервере.

Мой код следующий:

ASIHTTPRequest *requestFeed = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:kGZipSQLURL]];
[requestFeed setNumberOfTimesToRetryOnTimeout:2];
[requestFeed setDownloadDestinationPath:librarySQLGZipPath];
[requestFeed setCachePolicy:ASIAskServerIfModifiedCachePolicy|ASIFallbackToCacheIfLoadFailsCachePolicy];
[requestFeed setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
[requestFeed setSecondsToCache:60*60*24*30];
[requestFeed setDownloadCache:[ASIDownloadCache sharedCache]];
[requestFeed startSynchronous];
NSString *lastModified = [[requestFeed responseHeaders] objectForKey:@"Last-Modified"];
NSLog(@"Last Modified: %@",lastModified);

Итак, строка lastModified содержит метку времени / даты.Есть ли способ гарантировать, что для файла в librarySQLGZipPath теперь будет установлена ​​дата / время в lastModified?Используя текущий метод, файл librarySQLGZipPath содержит время, когда он был загружен, что для меня является недействительным.

Спасибо!

Jann

РЕДАКТИРОВАТЬ ПОЗЖЕ:

Поскольку я хотел красиво написать на этой странице, как сделать код для этого, и все же хотел поблагодарить Стивена Крамера за ответ, я сейчас собираюсь редактировать вопрос с помощьюОтвет, который я получил, используя код:

, тогда как NSDateFromRFC1123 - это процедура, найденная здесь: http://blog.mro.name/2009/08/nsdateformatter-http-header/ (с некоторыми изменениями) для изменения строки заголовка Last-Modified в объект NSDate:

NSDictionary *attrs = [NSDictionary dictionaryWithObjectsAndKeys:[self NSDateFromRFC1123:lastModified]  ,NSFileModificationDate, nil];
NSError *errorFile;
if ([NSFileManager defaultManager] setAttributes:attrs ofItemAtPath:librarySQLGZipPath error: &errorFile])
{
NSLog(@"Set timestamp of file");
}
else {
NSLog(@"COULD NOT set timestamp of file");
}

Большое спасибо, Стивен!

1 Ответ

9 голосов
/ 09 мая 2011

Использование -[NSFileManager setAttributes:(NSDictionary *)attributes ofItemAtPath:(NSString *)path error:(NSError **)error

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...