iOS - Faça o download do arquivo somente se modificado (NSURL & NSData)

Estou baixando um monte de arquivos de imagem de um servidor e quero garantir que eles sejam baixados apenas se forem mais recentes. Este método atualmente baixa as imagens bem. No entanto, não quero desperdiçar tempo ou energia para baixar imagens novamente toda vez que o usuário faz login no aplicativo. Em vez disso, quero baixar apenas os arquivos que A) Não existem B) São mais recentes no servidor do que no dispositivo

Aqui está como eu estou baixando as imagens: * O URL da imagem é salvo no Core Data com o vídeo ao qual está associado. A URL é gerada usando um método de conversão simples que eu construo (generateThumbnailURL)

-(void)saveThumbnails{
    NSManagedObjectContext *context = [self managedObjectContextThumbnails];
    NSError *error;
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription
                                   entityForName:@"Videos" inManagedObjectContext:context];
    [fetchRequest setEntity:entity];
    NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
    NSLog(@"Videos: %i",fetchedObjects.count);
    if (fetchedObjects.count!=0) {
        for(Videos *currentVideo in fetchedObjects){
            // Get an image from the URL below
            NSURL *thumbnailURL = [self generateThumbnailURL:[currentVideo.videoID intValue]];

            UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:thumbnailURL]];

            // Let's save the file into Document folder.
            // You can also change this to your desktop for testing. (e.g. /Users/kiichi/Desktop/)
            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);//Find Application's Document Directory
            NSString *documentsDirectory = [paths objectAtIndex:0];
            NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"DownloadedThumbnails"];
            //        NSString *dataPath = @"/Users/macminidemo/Desktop/gt";//DEBUG SAVING IMAGE BY SAVING TO DESKTOP FOLDER

            //Check if Sub-directory exists, if not, try to create it
            if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]){
                NSError* error;
                if([[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]){
                    NSLog(@"New Folder Created!");
                }
                else
                {
                    NSLog(@"[%@] ERROR: attempting to write create new directory", [self class]);
                    NSAssert( FALSE, @"Failed to create directory maybe out of disk space?");
                }
            }
            NSArray *splitFilename = [[self generateThumbnailFilename:[currentVideo.videoID intValue]] componentsSeparatedByString:@"."];//Break Filename Extension Off (not always PNGs)
            NSString *subString = [splitFilename objectAtIndex:0];
            NSString *formattedFilename = [NSString stringWithFormat:@"%@~ipad.png",subString];
            NSString *localFilePath = [dataPath stringByAppendingPathComponent:formattedFilename];
            NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];
            [imageData writeToFile:localFilePath atomically:YES];
            NSLog(@"Image: %@ Saved!",formattedFilename);
        }
    }
}

questionAnswers(2)

yourAnswerToTheQuestion