【发布时间】:2015-10-08 01:30:24
【问题描述】:
在我的一个应用程序中,我使用了块来调用 Web 服务并获得响应。现在我想用 swift 编写这个应用程序,但是在 Swift 中使用块/闭包时遇到了麻烦。 这是我想快速迁移的目标 C 代码:
调用 Communicator 的类方法
[[Communicator sharedInstance]callWebService:WS_LOGIN withMethod:POST_METHOD andParams:params showLoader:YES completionBlockSuccess:^(id obj) {
//Do play with data
}completionBlockFailiure:^(id obj) {
//Show alert with error
}];
在通信器类中
-(void)callWebService:(NSString *)serviceName withMethod:(NSString *)methodName andParams:(NSDictionary *)params showLoader:(BOOL)showLoader completionBlockSuccess:(void (^)(id))aBlock completionBlockFailiure:(void (^)(id))aFailBlock
{
if (showLoader) {
// show loader
}
[self performRequestWithServiceName:serviceName method:methodName andParams:params successblock:aBlock failureblock:aFailBlock];
}
- (void)performRequestWithServiceName:(NSString *)serviceName method:(NSString*)methodName andParams:(NSDictionary*)params
successblock:(void (^)(id obj))successBlock
failureblock:(void (^)(id obj))failBlock {
if(callSuceess){
successBlock(@"Success");
}else{
successBlock(nil);
}
}
【问题讨论】:
标签: ios objective-c swift closures objective-c-blocks