問題があります。iOSアプリケーションでMWFeedParserRssリーダーを使用しており、正常に機能しますが、フィードから画像を取得する必要があります。手伝ってくれませんか。
2 に答える
これをcellForRowAtIndexPath関数で使用して、セルが表示されたときに画像を検索するようにしました。
MWFeedItem *item = itemsToDisplay[indexPath.row];
if (item) {
NSString *htmlContent = item.content;
NSString *imgSrc;
// find match for image
NSRange rangeOfString = NSMakeRange(0, [htmlContent length]);
NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:@"(<img.*?src=\")(.*?)(\".*?>)" options:0 error:nil];
if ([htmlContent length] > 0) {
NSTextCheckingResult *match = [regex firstMatchInString:htmlContent options:0 range:rangeOfString];
if (match != NULL ) {
NSString *imgUrl = [htmlContent substringWithRange:[match rangeAtIndex:2]];
NSLog(@"url: %@", imgUrl);
//NSLog(@"match %@", match);
if ([[imgUrl lowercaseString] rangeOfString:@"feedburner"].location == NSNotFound) {
imgSrc = imgUrl;
}
}
}
}
フィードバーナータイプのアイコンを避けるために、URLに「feedburner」が含まれている場合も画像を無視していることに注意してください。
後で画像を表示するときにもAFNetworkのクラスを使用しています
if (imgSrc != nil && [imgSrc length] != 0 ) {
[myimage setImageWithURL:[NSURL URLWithString:imgSrc] placeholderImage:[UIImage imageNamed:IMAGETABLENEWS]];
} else {
NSLog(@"noimage");
cell.imageView.image = [UIImage imageNamed:IMAGETABLENEWS];
//[myimage setImage:[UIImage imageNamed:IMAGETABLENEWS]];
}
コメントしたNSLogパーツを残したので、コメントを外して必要かどうかを確認できます
プレースホルダーにIMAGETABLENEWS定数があることを確認するか、必要に応じてその部分を削除してください。
これは、HTMLテキスト内の画像の非常に単純なチェックであり、包括的ではありません。それは私の目的を果たし、より詳細なことを行うためのロジックを正しく理解するのに役立つ可能性があります。
MWFeedItem
画像が埋め込まれている場合enclosure-tag
は、次のことを検討してください。
MWFeedItem
と呼ばれるプロパティがありますenclosures
。これは、1つ以上の辞書を含む配列です。
この辞書は
- (BOOL)createEnclosureFromAttributes:(NSDictionary *)attributes andAddToItem:(MWFeedItem *)currentItem
(MWFeedParser.M
)で生成されます。
これらの辞書には3つのキーがあります(使用可能な場合):url
、type
&length
。
その最初のものはおそらくあなたが探しているものです。私はなんとかこのようにそれを得ることができました:
フィードの例
<item>
<title>Item title</title>
<link>http://www.yourdomain.com</link>
<description>Item description</description>
<pubDate>Mon, 01 Jan 2016 12:00:00 +0000</pubDate>
<enclosure url="http://www.yourdomain.com/image.jpg" length="0" type="image/jpeg"></enclosure>
<category>Algemeen</category>
</item>
内部の画像リンクに注意してください<enclosure></enclosure>
YourViewController.m
- (void)feedParser:(MWFeedParser *)parser didParseFeedItem:(MWFeedItem *)item {
NSArray *EnclosureArray = item.enclosures;
NSDictionary *ImageDict = [EnclosureArray objectAtIndex:0]; // 0 Should be replaced with the index of your image dictionary.
NSString *ImageLink = [ImageDict objectForKey:@"url"];
// Returns: http://www.yourdomain.com/image.jpg
}