Я использую 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];
}
Объект Parser будет анализировать файл 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
.
Может ли кто-нибудь указать мне правильное направление для этого? Или, может быть, указать мне другой подход?