基本的に、RSSフィードのアイテムを配列に保存してから、その配列を別の配列に配置して、すべてを格納します。たとえば、私はチャプターごとに大量の教育ビデオを保存することに取り組んでいるので(各チャプターにはRSSフィードがあります)、次のロジックを使用してMWFeedParserを使用してそれらを一度に解析しています。
for (NSString *url in videosArray) {
NSURL *feedURL = [NSURL URLWithString:url];
feedParser = [[MWFeedParser alloc] initWithFeedURL:feedURL];
feedParser.delegate = self;
feedParser.feedParseType = ParseTypeFull;
feedParser.connectionType = ConnectionTypeAsynchronously;
[feedParser parse];
}
これで問題は解決しますが、第3章のRSSフィードが第2章の前に解析を終了すると、第3章のコンテンツが第2章の場所に保存されます。これは不必要に複雑な説明のように聞こえるかもしれませんが、私の要求は単にこれです:
フィードのリストから一度に1つのフィードを解析し、フィードが完全に解析されるまで続行せず、その内容が配列に挿入される方法はありますか?
それが役立つ場合は、次の4つのデリゲートメソッドが役立ちます。
- (void)feedParserDidStart:(MWFeedParser *)parser {
NSLog(@"Started Parsing: %@", parser.url);
}
- (void)feedParser:(MWFeedParser *)parser didParseFeedInfo:(MWFeedInfo *)info {
NSLog(@"Parsed Feed Info: “%@”", info.title);
self.title = info.title;
}
- (void)feedParser:(MWFeedParser *)parser didParseFeedItem:(MWFeedItem *)item {
NSLog(@"Parsed Feed Item: “%@”", item.title);
if (item) [parsedItems addObject:item];
}
- (void)feedParserDidFinish:(MWFeedParser *)parser {
NSLog(@"Finished Parsing%@", (parser.stopped ? @" (Stopped)" : @""));
[courseBeingBuilt.mediaCollection addObject:parsedItems]; // Place chapter contents into Course's Chapter w/contents array
parsedItems = [[NSMutableArray alloc] init]; // Create new array for new chapter
}
みんなありがとう!