0

SDWebImage を使用して、解析した XML ファイルから画像をダウンロードし、それを TableView に表示します。しかし問題は、一部の画像が表示されないことです。これは次のようになります。

ここに画像の説明を入力

これは、最初の画像を解析して 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"]];
                     }];
4

1 に答える 1

0

«問題に直面したとき、「分かった、正規表現を使用する」と考える人がいます。現在、彼らには 2 つの問題があります。» ソース

に含まれているため、正規表現はドイツ語のウムラウトを処理する準備ができていないと思います

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

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
于 2013-03-23T16:19:20.880 に答える