I was wondering how to check and update a file for my iPhone using ASIHTTP
so far i have:
__block BOOL complete = NO;
__block BOOL failed = NO;
/* doing the actual check. replace your existing code with this. */
NSURL *url = [NSURL URLWithString:@"http://notasdasd.com/file.txt"];
ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:url];
[request setDownloadCache:[ASIDownloadCache sharedCache]];
[request setCachePolicy:ASIAskServerIfModifiedCachePolicy|ASIFallbackToCacheIfLoadFailsCachePolicy];
[request setCompletionBlock:^{complete = YES;}];
[request setFailedBlock:^{failed = YES;}];
[request startSynchronous];
NSString *latestText = [reque开发者_运维问答st responseString];
And I want to check the old version in cache directory and compare the last modified of the headers to the modified date of the file in cache directory and then replace.
try something like this:
if([[NSFileManager defaultManager] fileExistsAtPath:filePath]){
NSDictionary *dictionary = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:&error];
NSDate *fileDate =[dictionary objectForKey:NSFileModificationDate];
NSDate *today =[NSDate date];
if (![[[today dateByAddingTimeInterval:-(60*60*24)] earlierDate:fileDate] isEqualToDate:fileDate]) {
//file is less than 24 hours old, use this file.
}
else{
//file is older than 24 hours, replace it
}
}
Since you're using a download cache, it will do this for you. When the request completes, the response should be the most current version, and the request will only download the actual content again if it has been updated.
and how would I save this on the iphone?
The simplest approach is just to set a downloadDestinationPath on the request, and it will save it in a file for you.
精彩评论