如何在 SDwebimage 中使用成功和失败块

Posted

技术标签:

【中文标题】如何在 SDwebimage 中使用成功和失败块【英文标题】:How to use success & failure block in SDwebimage 【发布时间】:2014-03-11 09:02:06 【问题描述】:

我有最新版本的SDWebimage,但它没有成功和失败 我尝试了以下方法但SDwebimage没有方法

[self.imageView setImageWithURL:[NSURL URLWithString:self.imageURL]
              placeholderImage:[UIImage imageNamed:@"YourPlaceholder.png"]
                       success:^(UIImage *image) 
                           // remove animation

                       
                       failure:^(NSError *error) 
                           NSLog(@"thumbnail error: %@",error);
                           // handle failed download

                       ];

有人知道如何在 SDwebimage setImageWithURL 或任何其他替代品中添加成功和失败块 如果从 URL 获取图像时出现错误,我想处理

【问题讨论】:

【参考方案1】:

试试这个:

[self.imageView setImageWithURL:[NSURL URLWithString:imageURL]
                   placeholderImage:[UIImage imageNamed:@"YourPlaceholder.png"]
                          completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) 
                              //... completion code here ...
                          ];

【讨论】:

【参考方案2】:

Swift 3 的解决方案:

cell.imageView?.sd_setImage(with: url)  (image, error, cache, urls) in
            if (error != nil) 
                //Failure code here
                cell.imageView.image = UIImage(named: "ico_placeholder")
             else 
                //Success code here
                cell.imageView.image = image
            

目标 C 的解决方案:

[cell.imageView sd_setImageWithURL:url
                  placeholderImage:nil
                         completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) 
                                if (error) 
                                  //Failure code here
                                  self.imageView.image = [UIImage imageNamed:@"ico_placeholder"];
                                 else 
                                  //Success code here
                                  self.imageView.image = image;
                                
];

希望你们觉得这很有用。

【讨论】:

【参考方案3】:
            imageView.sd_setImageWithURL(NSURL(string: urlString), completed: 
                (image, error, cacheType, url) in
                // do your custom logic here
            )

swift 2.0 的示例代码

【讨论】:

【参考方案4】:

它有完成块

completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType)

你可以检查error是否为nil,那么一切都很好。

【讨论】:

是的,这就是我现在正在做的事情

以上是关于如何在 SDwebimage 中使用成功和失败块的主要内容,如果未能解决你的问题,请参考以下文章

为什么SDWebImage在decodeImageWithImage方法中使用@autoreleasepool块?

SDWebImage加载图片失败

iOS SDWebImage 加载网络图片失败,重新运行才有图片

通过 SdWebImage 设置图像给出“错误代码=-1003”并使用 CFNetwork 诊断日志“Err(-65554)”

调用 AFNetworking 响应失败块而不是成功块

CATransaction 完成块成功或失败