XMLRESTWebサービスを照会する小さなiOSアプリを書いています。使用されているネットワークフレームワークはAFNetworkingです。
状況
Webサービスをクエリするために、AFHTTPClientをサブクラス化しました。
@interface MyApiClient : AFHTTPClient
実装では、それをシングルトンとして利用できるようにします。
+ (MyApiClient *)sharedClient {
static MySharedClient *_sharedClient = nil;
static dispatch_once_t oncePredicate;
dispatch_once(&oncePredicate, ^{
_sharedClient = [[self alloc] initWithBaseUrl:[NSUrl URLWithString:@"http://url.to.the.webservice"]];
});
return self;
}
initWithBaseURLで、AFNetworkingにXMLコンテンツを期待するように指示します。
[self registerHTTPOperationClass:[AFXMLRequestOperation class]];
これで、ViewControllerからシングルトンでgetPatchを呼び出し、成功ブロックで返されたXMLの解析を開始できます。次に、ViewControllerのNSXMLParserDelegateメソッドで、関心のあるXMLの部分を選択し、それを使用して処理を行うことができます。
問題
HTTPClientシングルトンに、Webサービスに関連するすべてを処理し、XMLの代わりにデータモデルまたはモデルのリストを返すメソッドが必要です。
たとえば、私は次のようなことをしたいと思います。
ServerModel *status = [[MyApiClient sharedClient] getServerStatus];
次に、ApiClientは内部でWebサービスを呼び出し、XMLを解析して、モデルを返します。どうやってやるの?通常、XMLが解析されると呼び出されるデリゲートを使用しますが、ApiClientのシングルトンの性質により、複数のデリゲートが存在する可能性がありますか?
誰かがこれに光を当てることができることを願っています、ありがとう!