TableView问题中的图像

时间:2013-03-23 16:03:06

标签: ios objective-c cocoa-touch uitableview sdwebimage

我使用SDWebImage从我解析的XML文件下载图片,并将其显示在TableView中。但问题是没有显示某些图像。这就是它的样子:

enter image description here

这是我解析第一张图片并在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"]];
                     }];

1 个答案:

答案 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&#039;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