NSURLConnectionDelegateメソッドを実装するサービスAPIクラスのようなものがあります。私は、このメソッドのいくつかが廃止され、AppleがNSURLSessionの使用を提案していることに気付きました。私はこのサービスAPIの独自のデリゲートを作成しました。これは、呼び出し側クラスが実装し、応答を受け取ったときに実行されます。 NSURLSessionを使用しているときに、私が何か類似のことをする方法を探しています。NSURLConnectionをNSURLSessionに変換する際にコントローラに応答を渡す
NSURLConnectionと私の存在のもの:
- (void)httpServiceRequest:(NSMutableURLRequest *)serviceRequest {
//[[NSURLSession sharedSession] dataTaskWithRequest:serviceRequest] resume];
self.requestConnection = [NSURLConnection connectionWithRequest:serviceRequest delegate:self];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[self.delegate getResponseData:self.responseData sender:self];
}
クラスの要求を行って応答を取得: ServiceAPI実装ファイルで
@class ServiceAPI;
@protocol ServiceAPIDelegate <NSObject>
- (void)getResponseData:(NSData *)responseData;
@end
@interface ServiceAPI : NSObject<NSURLCoDelegate>
- (void)httpServiceRequest:(NSMutableURLRequest *)serviceRequest;
@property (nonatomic, weak) id <ServiceAPIDelegate> delegate;
@end
を
@interface CallingController : UITableViewController<ServiceAPIDelegate>
@end
実装ファイルCallingController:
- (void)getResponseData:(NSData *)responseData {
// Do something with response.
}
私はNSURLSessionを使用している間、呼び出し元のクラスはちょうどNSURLConnectionのような応答方法を処理させるにはどうすればよいです。 NSURLSessionを読んだことは、このような完了ハンドラのものを使用して一緒に処理され、要求と応答のように見えますが:
NSURLSessionDataTask *dataTask = [session dataTaskWithURL:[NSURL URLWithString:@"https://itunes.apple.com/search?term=apple&media=software"] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLog(@"%@", json);
}];
私はまだちょうど呼び出しを行うためのAPIにサービスを提供するための要求を下に渡すサービスAPIのクラスと私のコントローラを持ちたい応答が戻ったら、コントローラに渡されます。どのように私はNSURLSessionを使用している間、コントローラに応答を渡すのですか?