我正在使用 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/