2013-03-23 3 views
0

Я использую SDWebImage для загрузки изображений из моего проанализированного XML-файла и отображения его в TableView. Но проблема в том, что некоторые изображения не отображаются. Это его так, как он выглядит:Образы в TableView Issue

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"]]; 
        }]; 
+0

может у нас ссылку на изображение, что не работает? – vikingosegundo

+0

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

+0

Не может быть, потому что в ссылке есть специальный символ, например «ö»? –

ответ

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

Это действительно помогло, спасибо :)! –

+0

см. Мое редактирование для подхода NSScanner – vikingosegundo

Смежные вопросы