2011-05-09 14 views
6

Wiem, że mogę użyć attributesOfItemAtPath, aby uzyskać czas modyfikacji pliku/datę między innymi ... ale czy istnieje sposób, aby ustawić datę/czas modyfikacji plik?Jak ustawić attributesOfItemAtPath (takie jak data/czas modyfikacji) na iPhonie

Spojrzałem na How to set the modification time of a file programmatically?, ale wydaje się, że to nie dotyczy.

Powodem, dla którego pytam, jest użycie http://allseeing-i.com/ASIHTTPRequest/ (jak poniżej) do pobrania pliku ... jednak znacznik czasu nie jest zachowywany tak jak czas ostatniej modyfikacji na serwerze. Chcę użyć nagłówka Last-Modified, aby ustawić datę/godzinę pobranego pliku, dzięki czemu mogę zachować pobrane w moim systemie czasy takie jak na serwerze.

Mój kod następująco:

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

więc ciąg lastModified posiada czas/datownik. Czy istnieje sposób, aby plik librarySQLGZipPath został ustawiony na datę/czas w lastModified? Przy użyciu bieżącej metody plik librarySQLGZipPath przechowuje czas, w którym został pobrany, co jest dla mnie nieważne.

Dzięki!

Jann

później edytować:

Bo chciałem ładnie umieścić na tej stronie, jak zrobić kod do tego i nadal chciał dać Steven Kramer punktów za odpowiedzi Jestem teraz będzie edytuj pytanie z odpowiedzią otrzymałem kod:

podczas gdy NSDateFromRFC1123 jest rutynową procedurą dostępną tutaj: http://blog.mro.name/2009/08/nsdateformatter-http-header/ (z pewnymi korektami), aby zmienić ostatnio zmodyfikowany ciąg nagłówka na obiekt 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"); 
} 

Wielkie dzięki Steven!

Odpowiedz

9

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

+0

Ahh .. coś http://stackoverflow.com/questions/5791148/set-date-modified-of-files-in-cocoa (to nie pojawią się w poszukiwaniu cos umieścić w iPhonie) Dzięki za wskazanie mnie we właściwym kierunku. Checkmark i +1 – Jann

+0

Tak, to wydaje się być tylko bilet ;-) –

+0

Dzięki, pomogło mi to. –