ViewController Aの辞書からURLとしてイメージを取得していて、その辞書をViewController BIに渡しました。ユーザーがイメージを更新した場合は、更新されたイメージが表示されます。イメージと私はそれのために次のコードをやっています.Kindlyチェックし、なぜそれが望むように動作していないと、すべての場合にのみ、前の画像を示してください。イメージを更新して辞書に保存する
-(void)showUserImage:(NSURL*)imgUrl
{
[ConnectionManager setSharedCacheForImages];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:imgUrl];
NSURLSession *session = [ConnectionManager prepareSessionForRequest];
NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request];
if (cachedResponse.data) {
UIImage *downloadedImage = [UIImage imageWithData:cachedResponse.data];
dispatch_async(dispatch_get_main_queue(), ^{
_profileImageView.image = downloadedImage;
});
} else {
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;
if(res.statusCode == 200){
dispatch_async(dispatch_get_main_queue(), ^{
_profileImageView.image = [UIImage imageWithData:data];
});
}
}];
[task resume];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
if(_profileImageView.image == [_detailsDictionary valueForKey:@"ProfilePictureUrl"]) {
NSLog(@"Th url of image is %@",[_detailsDictionary valueForKey:@"ProfilePictureUrl"]);
}
else {
_profileImageView.image = image;
UIImage *updatedImage = _profileImageView.image;
NSData *imageData = UIImageJPEGRepresentation(updatedImage, 100);
NSString *strEncoded = [imageData base64EncodedStringWithOptions:0];
[_detailsDictionary setObject:strEncoded forKey:@"ProfilePictureUrl"];
[self dismissViewControllerAnimated:YES completion:nil];
}
}
を、あなたは、最初のURLから画像をダウンロードすることがNSDataのだ作成し、ハッシュに変換する必要があります。選択したローカルイメージと同じ操作を行います。今度はハッシュを比較し、同じであれば画像は同じです。 – NSNoob
また、サーバー上のイメージに、イメージのデバイスIDとローカルIDのハッシュを指定し、イメージURLに含めることもできます。選択したイメージのlocalIdentifierとデバイスのIDに対して、urlのハッシュ文字列と生成されたハッシュを比較します。それらが同じ場合、画像は同じです。私は個人的には、最初に画像をダウンロードする気にならないように、2番目の方法に行きます – NSNoob