2011-05-09 12 views
6

So che posso usare attributesOfItemAtPath per ottenere l'ora/data di modifica del file tra le altre cose ... ma c'è un modo per impostare la data/ora di modifica di un file?Come impostare attributesOfItemAtPath (come data/ora di modifica) su iPhone

Ho visto How to set the modification time of a file programmatically? ma non sembra applicarsi.

Il motivo per cui lo chiedo è che utilizzo http://allseeing-i.com/ASIHTTPRequest/ (come indicato di seguito) per recuperare un file ... tuttavia il timestamp non viene mantenuto uguale all'ora Last-Modified sul server. Voglio usare l'intestazione Last-Modified per impostare la data/ora del file scaricato in modo da poter mantenere l'ora scaricata sul mio sistema così come è sul server.

Il mio codice segue:

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); 

Così, la stringa lastModified detiene il data/ora. C'è un modo per garantire che il file in librarySQLGZipPath sarà ora impostato su data/ora in lastModified? Utilizzando il metodo corrente, il file librarySQLGZipPath contiene il tempo in cui è stato scaricato, che per me non è valido.

Grazie!

Jann

modificare in seguito:

perché volevo ben messo in questa pagina come fare il codice per questo e ha voluto dare Steven Kramer credito per rispondere sono ora andando modifica la domanda con la risposta che ho ottenuto utilizzando il codice:

mentre-è una routine trovata qui: http://blog.mro.name/2009/08/nsdateformatter-http-header/ (con alcune regolazioni) per modificare la stringa di intestazione Last-Modified in un oggetto 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"); 
} 

Grazie mille Steven!

risposta

9

Usa -[NSFileManager setAttributes:(NSDictionary *)attributes ofItemAtPath:(NSString *)path error:(NSError **)error

+0

Ahh .. qualcosa di simile http://stackoverflow.com/questions/5791148/set-date-modified-of-files-in-cocoa (Questo non è venuto in cerca cos i messo in iPhone) Grazie per avermi indicato nella giusta direzione. Segno di spunta e +1 – Jann

+0

Sì, quello sembra essere solo il biglietto ;-) –

+0

Grazie, mi ha aiutato. –

Problemi correlati