iphone - 我如何检查 NSUrl 是否是有效的图像 url?

标签 iphone ios sdwebimage

我正在使用 SDWebImage 库,并且我有以下代码:

     [cell.imgLogo setImageWithURL:[NSURL URLWithString:[item objectForKey:@"s_logo"]]         placeholderImage:[UIImage imageNamed:@"default.png"]];

我对库 SDWebImage 进行了一些调整,以忽略方法 downloadWithURL: delegate: options: userInfo:: 中的空字符串或带有空字符串的 NSUrl:

     if ([url isKindOfClass:NSString.class])
     {
         if ([(NSString *)url length] > 0) {
              url = [NSURL URLWithString:(NSString *)url]; 
         } else {
              return;
         }
    }
    else if (![url isKindOfClass:NSURL.class])
    {
         url = nil; // Prevent some common crashes due to common wrong values passed like NSNull.null for instance
    }
    else if ([url isKindOfClass:NSURL.class]) {
         if ([[url absoluteString] length] > 0) {
              //valid url
         } else {
             return;
         }
     }

现在它可以使用空字符串并仅显示其默认图像,但问题是当它涉及到不是图像网址的字符串时,例如:

     http://beta.xxxxxxx.com/gangnamwe?to=boko

它不显示任何内容,它删除占位符图像并且不显示任何内容。

那么我如何识别有效的图像网址?或者有什么更好的解决办法吗?

非常感谢您的帮助。

最佳答案

您可以在从 NSURL 获取 NSData 后进行检查。您可以使用GCD下载数据

这是我创建的一个示例,它将您的图像保存在照片库中。

dispatch_async(dispatch_queue_create("com.getImage", NULL), ^(void) {

        NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRKII9COB-hvMef4Zvb9XYVbXKDFZHJAHwwzzGyMiy_b-q65GD43Chd37jH"]];
        UIImage *image=[UIImage imageWithData:data];
        if (image==nil) {
            //yourImageURL is not valid
            image=[UIImage imageNamed:@"placeholder.png"];
        }
        else{

            //yourImageURL is valid
            dispatch_async(dispatch_get_main_queue(), ^{
                UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
                //show your image
            });

        }

    });

关于iphone - 我如何检查 NSUrl 是否是有效的图像 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17084601/

相关文章:

iphone - map View 删除多个图钉

ios - CoreBluetooth 反复断开连接

ios - SDWebImage 始终返回错误代码 401

ios - 使用SDWEBIMAGE中存储在服务器上的图像的唯一URL,在应用程序目录(缓存)中获取唯一的图像文件路径

Android、iPhone、iPad、Windows Phone 健身应用的定期(订阅)付款

iOS:如何制作多列表

iphone - 部署目标为 7.0 时架构错误的 undefined symbol

ios - 在 Swift 中子类化 UIView - 错误

android - 我们需要每天早上7点运行重复通知,内容是动态的

ios - 快速调整 sdwebImage 的大小