-2
私は、getContentInBackgroundWithMemberIdとpostRequest関数を持つRequestManagerクラスを持っています。私はそれらを私のView Controllerから呼び出して、完了ハンドラを使って結果を得たいと思う。私の機能を編集するには?目的c完了ハンドラ
RequestManager.h
#import <Foundation/Foundation.h>
@interface RequestManager : NSObject
-(void)getContentInBackgroundWithMemberId:(int)memberId;
@end
RequestManager.m
#import "RequestManager.h"
@implementation RequestManager
-(void)postRequestWithParams:(NSDictionary*)params
{
NSString *parameters = @"encrypt=93mrLIMApU1lNM619WzZje4S9EeI4L2L";
for(id key in params)
{
NSString *obj = [NSString stringWithFormat:@"&%@=%@",key,[params objectForKey:key]];
[parameters stringByAppendingString:obj];
}
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"http://someserver"]];
NSData *postBody = [parameters dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:postBody];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
if(!connectionError)
{
NSDictionary *serverData =[NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSArray *result = [NSArray array];
result = [serverData objectForKey:@"result"];
}
}];
}
-(void)getContentInBackgroundWithMemberId:(int)memberId
{
NSDictionary *params = [NSDictionary dictionary];
params = @{@"member_id":[NSNumber numberWithInt:memberId]};
[self postRequestWithParams:params];
}
@end
ViewController.h
#import <UIKit/UIKit.h>
#import "RequestManager.h"
@interface ViewController : UIViewController
@property (strong,nonatomic) RequestManager *requestManager;
@end
ViewController.m
#import "ViewController.h"
@interface ViewController
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
int memberId = 82;
//here i want to call getContentInBackgroundWithMemberId and get result using completion handler;
_requestManager = [[RequestManager alloc]init];
[_requestManager getContentInBackgroundWithMemberId:memberId];
}
@end
thanxです。ビューコントローラから呼び出すときの構文は何ですか? –
@DenisWindover 'getContentInBackgroundWithMemberId:(int)memberIdが完了しました:^(BOOL状態){//要求が完了した後に呼び出されます} – Teffi