我是iPhone的新手请告诉我任何人,如果我想在第一时间下载100张图片,那么在所有100张图片中第2次只会修改10张图片,我想覆盖10张图片如何做到这一点??
答案 0 :(得分:1)
第一次同步存储同步时间。并在下次同步中将此时间传递给Web服务。因此,在此响应中,您将只获得那些将在上次同步时间之后更新并仅更新该图像的记录。但为此,您必须在Web服务中添加时间标记。
答案 1 :(得分:0)
如果服务器响应提供除url之外的图像属性,例如让我们考虑具有唯一ID的图像。然后将图像和图像id保存到字典中,同时保存所有图像,即在第一次下载时。
如果服务器有修改,那么在该响应中,您将使用某些属性获得修改后的图像。现在存储修改后的图像ID并下载它们。
你可以按照这里回答的问题来解答。
iOS - Download file only if modified (NSURL & NSData)
有代码
我最终使用此方法检测文件上的修改日期: *在HERE
上找到-(bool)isThumbnailModified:(NSURL *)thumbnailURL forFile:(NSString *)thumbnailFilePath{
// create a HTTP request to get the file information from the web server
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:thumbnailURL];
[request setHTTPMethod:@"HEAD"];
NSHTTPURLResponse* response;
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
// get the last modified info from the HTTP header
NSString* httpLastModified = nil;
if ([response respondsToSelector:@selector(allHeaderFields)])
{
httpLastModified = [[response allHeaderFields]
objectForKey:@"Last-Modified"];
}
// setup a date formatter to query the server file's modified date
// don't ask me about this part of the code ... it works, that's all I know :)
NSDateFormatter* df = [[NSDateFormatter alloc] init];
df.dateFormat = @"EEE',' dd MMM yyyy HH':'mm':'ss 'GMT'";
df.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
df.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
// get the file attributes to retrieve the local file's modified date
NSFileManager *fileManager = [NSFileManager defaultManager];
NSDictionary* fileAttributes = [fileManager attributesOfItemAtPath:thumbnailFilePath error:nil];
// test if the server file's date is later than the local file's date
NSDate* serverFileDate = [df dateFromString:httpLastModified];
NSDate* localFileDate = [fileAttributes fileModificationDate];
NSLog(@"Local File Date: %@ Server File Date: %@",localFileDate,serverFileDate);
//If file doesn't exist, download it
if(localFileDate==nil){
return YES;
}
return ([localFileDate laterDate:serverFileDate] == serverFileDate);
}
答案 2 :(得分:0)
希望这会有所帮助。
首先,您必须跟踪修改的图像,而不是仅下载这些图像。
为此您有两种方式:
1)您可以在修改时在服务器端设置不同的图像名称,并且在下载第一次调用列出图像名称的Web服务时。然后将这些名称与下载的图像名称(即文档目录中的名称)进行比较。如果它们不同于下载而不是。
2)您可以创建存储先前下载图像信息的本地数据库,并在下载第二次比较这些值。如果不同于下载别的。