Ios 如果图像被修改,请获取图像

Ios 如果图像被修改,请获取图像,ios,afnetworking,nsurlconnection,Ios,Afnetworking,Nsurlconnection,我正在使用AFNetworking并下载图像(如果是新图像) 在我读过stackoverflow之后,目前我是这样做的 如果图像未被修改,http头中将有缓存,我使用该事实来检查图像是否被修改 它在大多数iOS上运行良好。但是,在iphone6sios9.2.1上,它总是假设为新的图像 我应该如何检测服务器中的图像是否已通过使用AFNetworking进行了修改,或者可能是NSUrlConnection - (void)downloadSplashScreenFromURL:(NSString

我正在使用AFNetworking并下载图像(如果是新图像)

在我读过stackoverflow之后,目前我是这样做的

如果图像未被修改,http头中将有缓存,我使用该事实来检查图像是否被修改

它在大多数iOS上运行良好。但是,在iphone6sios9.2.1上,它总是假设为新的图像

我应该如何检测服务器中的图像是否已通过使用AFNetworking进行了修改,或者可能是NSUrlConnection

- (void)downloadSplashScreenFromURL:(NSString *)urlStr
{

BOOL __block responseFromCache = YES; // yes by default

void (^requestSuccessBlock)(AFHTTPRequestOperation *operation, id responseObject) = ^(AFHTTPRequestOperation *operation, id responseObject) {

    // response was returned from the server, not from cache
    NSString *assestName = [urlStr lastPathComponent];

    ////WRITE TO FILEPATH
    NSString *filePath = [splashDirectory() stringByAppendingString:
                                    [NSString stringWithFormat:@"/%@", assestName]];

    if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
        DLog(@"Splash : Splash image is empty");
        NSData *pngData = UIImagePNGRepresentation(responseObject);
        [pngData writeToFile:filePath atomically:YES];

        return ;
    }

    if (responseFromCache) {
        // response was returned from cache
        DLog(@"SPLASH - RESPONSE FROM CACHE: %@", responseObject);
    }
    else {

        DLog(@"SPLASH - NEW IMAGES FROM SERVER \n Response: %@", responseObject);

        NSData *pngData = UIImagePNGRepresentation(responseObject);
        [pngData writeToFile:filePath atomically:YES];
        [[NSUserDefaults standardUserDefaults] removeObjectForKey:USERDEFAULTS_SPLASH_SCREEN];


        [[SplashHelper sharedInstance] showSplash:YES inWindow:[AppDelegate instance].window andSuccessBlock:^{
            [[AppDelegate instance] startRunning];
        }];

    }
};

void (^requestFailureBlock)(AFHTTPRequestOperation *operation, NSError *error) = ^(AFHTTPRequestOperation *operation, NSError *error) {

    NSInteger statusCode = operation.response.statusCode;
    DLog(@"SPLASH - status code: %lu \nERROR: %@", (long)statusCode, [error localizedDescription]);

    DLog(@"SPLASH - ERROR: %@", error);
};

DLog(@"Splash : CALL SPLASH SCREEN HELPER");

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
AFHTTPRequestOperation *operation = [manager GET:urlStr
                                      parameters:nil
                                         success:requestSuccessBlock
                                         failure:requestFailureBlock];

[manager.requestSerializer setTimeoutInterval:3.0f];

operation.responseSerializer = [AFImageResponseSerializer serializer];


[operation setCacheResponseBlock:^NSCachedURLResponse *(NSURLConnection *connection, NSCachedURLResponse *cachedResponse) {
    // this will be called whenever server returns status code 200, not 304
    responseFromCache = NO;
    DLog(@"Splash : cachedResponse = %@", cachedResponse);
    return cachedResponse;
}];

}
我正在我的应用程序中使用
#import“UIImageView+AFNetworking.h”
类别将图像从我的服务器加载到应用程序。它工作得很好,每当服务器上的图像更新时,它都会生成新的URL,因此当我请求新的URL时,
AFNetworking
将找不到缓存的图像,并将从服务器加载新图像

你们也应该检查一下这一点,-当你们需要在你们的应用程序的缓存区内寻找一个图像时,就有了这个要求