0

私は 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 を使用して 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

誰かがこれを行う正しい方向に私を向けることができますか? または、別のアプローチを教えてください。

4

1 に答える 1