2013-03-23 1 views
0

나는 파싱 된 XML 파일에서 그림을 다운로드하고 TableView에 표시하기 위해 SDWebImage를 사용합니다. 그러나 문제는 일부 이미지가 표시되지 않는다는 것입니다. 에 직면 할 때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

는 u는 우리에게 이미지에 대한 링크, 그 나던 일을 줄 수 있습니까? – vikingosegundo

+0

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

+0

"ö"와 같이 링크에 특수 문자가있을 수 있습니까? –

답변

1

«어떤 사람들 :

enter image description here

이것은 첫 번째 이미지를 분석하고있는 TableView 셀에 표시 내 코드입니다 : 이것은 것 같습니다 어떻게 "정규식을 사용할 것입니다."라고 생각하면 문제가 발생합니다. 이제는 두 가지 문제가 있습니다.»source

나는 그것이 힘든 (if not impossible)입니다

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

에 포함되는 한, 독일어 umlaute을 처리 할 준비 밤은 당신의 정규식 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

관련 문제