Използвам NSURLSession за изтегляне на xml файлове и след това искам да направя различна обработка на тези файлове, като например анализирането им:
-(void)parseFeed:(NSURL *)url
{
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url];
NSURLSessionDataTask* task = [FeedSessionManager.sharedManager.session dataTaskWithRequest:request completionHandler:^(NSData* data, NSURLResponse* response, NSError* error)
{
Parser* parser = [[Parser alloc] initWithData:data];
[self.feeds addObjectsFromArray:[parser items]];
}];
[task resume];
}
Обектът на анализатора ще анализира xml файла с помощта на NSXMLParser
. parseFeed:(NSURL*)url
се извиква от ViewController
:
Downloader* downloader = [[Downloader alloc] init];
[downloader parseFeed:[NSURL URLWithString:@"http://www.engadget.com/tag/features/rss.xml"]];
NSArray* items = [downloader feeds];
Ето как създавам обекта NSURLSession
:
-(id)init
{
if(self = [super init])
{
_session = [NSURLSession sessionWithConfiguration:FeedSessionConfiguration.defaultSessionConfiguration delegate:self delegateQueue:nil];
}
return self;
}
Разбира се, този подход не работи за мен. В метода parseFeed
искам да изчакам, докато всички данни бъдат изтеглени и обработени. Само тогава искам да получа достъп до масива self.feeds
в ViewController
.
Може ли някой да ме насочи в правилната посока да направя това? Или може би да ме насочите към различен подход?