特定の API URL を呼び出し、API 呼び出しの結果が入力されたモデル オブジェクトを返すいくつかのメソッドを持つ APIController をアプリケーションに作成しました。
API は json で動作し、今までのコードは次のようになります。
//Definition:
- (MyModel *)callXYZ;
- (MyModel *)callABC;
- (MyModel *)call123;
//Implementation of one:
- (MyModel *)callXYZ {
//Build url and call with [NSData dataWithContentsOfURL: url];
//Create model and assign data returned by api
return model;
}
ここで、優れた AFNetworking フレームワークを使用して、その "dataWithContentsOfURL" 呼び出しを取り除きたいと考えています。だから私は自分の方法を変更しました:
- (MyModel *)callXYZ {
__block MyModel *m;
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:urlString parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
//process data and assign to model m
}
return m;
}
URL 呼び出しが完了する前に空のモデルが返されるため、このコードは機能しません。私は立ち往生しており、これを機能させるためにデザインをリファクタリングする方法がわかりません。
//編集: 知っておくことが重要かどうかはわかりませんが、後で API が呼び出されている間に読み込みアニメーションを表示したいと考えています。