2

iOSプログラミングを一から学び始めています。

アプリで Web サイトから XML を取得したい。MVCパターンに準拠するには、それを達成するためのメソッドを提供するだけのモデルクラスが必要だと考えています(XMLも解析して配列を返すようにするかもしれません)。

問題は、私が見つけたすべてのチュートリアルが、ビューとコントローラーのコンテキストで NSURLSession を教えていることです。そのため、appdelegate を編集するか、View Controller を作成するなどしてください。

Apples のドキュメントから次のメソッドを取得しました。現在、ボタンが押されたときに IBAction として実行しています (実行して簡単にテストできます)。私はそれを機能させてから、独自のクラスに入れたいと思います:

__block NSMutableData *webData;

NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];

NSURLSession *delegateFreeSession = [NSURLSession sessionWithConfiguration:defaultConfigObject delegate: nil delegateQueue: [NSOperationQueue mainQueue]];
[[delegateFreeSession dataTaskWithURL: [NSURL URLWithString:url] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
{
    NSLog(@"Got response %@ with error %@.\n", response, error);
    NSLog(@"DATA:\n%@\nEND DATA\n", [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]);
        webData = [[NSMutableData alloc] initWithData:data];
}
]resume];

私の当面の質問は次のとおりです。

完了ハンドラーがどのように機能しているかdata、そこから抜け出す方法を誰かが説明できますか? それは機能しています。データはWebサイトからxmlを取得してコンソールに記録してwebDataいますが、コピーは機能せず、コンパイルはしますがコピーしません。(そもそも__block宣言がそこに忍び込むことを許可している理由を私はまだ理解しています!)webData

私のより大きな質問は、このプロセス用の別のモデル クラスのアイデアが良いアイデアであると誰もが考えるかどうかということです。これを設計するより良い方法はありますか?

ありがとうございました!

4

1 に答える 1