我使用SDWebImage从我解析的XML文件下载图片,并将其显示在TableView中。但问题是没有显示某些图像。这就是它的样子:
这是我解析第一张图片并在TableView Cell中显示的代码:
// Parse out Image URL for cell
NSError *error = NULL;
NSRegularExpression *regexImage = [NSRegularExpression regularExpressionWithPattern:@"(<img\\s[\\s\\S]*?src\\s*?=\\s*?['\"](.*?)['\"][\\s\\S]*?>)+?"
options:NSRegularExpressionCaseInsensitive
error:&error];
[regexImage enumerateMatchesInString:item.content
options:0
range:NSMakeRange(0, [item.content length])
usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
NSString *src = [item.content substringWithRange:[result rangeAtIndex:2]];
NSLog(@"img src: %@", src);
[cell.imageView setImageWithURL:[NSURL URLWithString:src] placeholderImage:[UIImage imageNamed:@"Placeholder.png"]];
}];
答案 0 :(得分:0)
«有些人在面对问题时会想“我知道,我会使用正则表达式。”现在他们有两个问题。»source
我认为你的正则表达不准备处理德国变形金刚,因为它包含在
中http://www.floorballmagazin.de/wp-content/uploads/2013/03/Floorfighters-döbeln.jpg
写一个正则表达式很难(if not impossible),它正确地处理html或它的片段。
如果我是你,我不会走那条路。您应该使用html解析器解析它,或者 - 在这种情况下我更喜欢 - 使用NSScanner。这里有一个如何使用NSScanner的例子:
NSArray *imgtags = @[@"<p>sdf </p><img alt=\"\" src=\"http://www.floorballmagazin.de/wp-content/uploads/2013/03/Floorfighters-döbeln.jpg\" /> ",
@"<img src=\"http://www.floorballmagazin.de/wp-content/uploads/2012/01/20121501_nilsson_etv_as.jpg\" alt=\"Hat's nicht so mit blauem Dunst - Johan Nilsson. / Foto: Andreas Schulz\" width=\"595\" height=\"384\" class=\"size-full wp-image-11542 colorbox-16600\" />"];
[imgtags enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSScanner *scanner = [NSScanner scannerWithString:obj];
[scanner scanUpToString:@"<img" intoString:NULL];
[scanner scanUpToString:@"src" intoString:NULL];
[scanner scanUpToString:@"=" intoString:NULL];
[scanner scanUpToString:@"\"" intoString:NULL];
[scanner setScanLocation:[scanner scanLocation]+1];
NSString *s;
[scanner scanUpToString:@"\"" intoString:&s];
s = [s stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@" "]];
NSLog(@"%@", s);
}];
结果:
http://www.floorballmagazin.de/wp-content/uploads/2013/03/Floorfighters-döbeln.jpg
http://www.floorballmagazin.de/wp-content/uploads/2012/01/20121501_nilsson_etv_as.jpg