2013-03-23 64 views
0

我使用SDWebImage從解析的XML文件中下載圖片,並將其顯示在TableView中。但問題是一些圖像沒有顯示。這一點,它的樣子:TableView中的圖像問題

enter image description here

這是我分析出的第一圖像和TableView中單元格中顯示它的代碼:

// 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

ü可以給我們一個鏈接到一個圖像,這並不工作? – vikingosegundo 2013-03-23 16:11:49

+0

http://www.floorballmagazin.de/wp-content/uploads/2013/03/Floorfighters-döbeln.jpg – 2013-03-23 16:18:42

+0

難道是因爲鏈接中有一個特殊字符,比如「ö」? – 2013-03-23 16:20:41

回答

1

«有些人,當面對一個問題,認爲「我知道,我會用正則表達式」。現在他們有兩個問題。»source

我覺得你的正則表達式的心不是準備好如何處理德國umlaute,因爲它是包含在

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 
+0

真的有幫助,謝謝:)! – 2013-03-23 16:23:32

+0

請參閱我對NSScanner方法的編輯 – vikingosegundo 2013-03-23 16:59:35