带完成处理程序的方法

时间:2017-03-08 06:44:05

标签: ios objective-c block

我在类中创建了一个方法:

- (void)getTableData:(NSString *)URL withCompletionHandler:(void (^)(NSString *))handler{

__block NSDictionary *JSON;
[manager POST:urlString parameters:jsonDict success:^(AFHTTPRequestOperation *operation, id responseObject){

    JSON = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:&error];
    handler(JSON);
}
      failure:^(AFHTTPRequestOperation *operation, NSError *error) {
          NSLog(@"error %@",error);
          // handle failure
      }];
}

并通过

在另一个班级中调用它
[ObjOfSecondClass getTableData:BILL withCompletionHandler:^(NSString* returnString)handler{
    }];

它显示处理程序的预期表达式错误。

1 个答案:

答案 0 :(得分:2)

这是一个表达式错误,因为你以错误的方式使用它。

viewDidLoad

中试试这个
[ObjOfSecondClass getTableData:BILL withCompletionHandler:^(NSString* returnString){
}];

handler用于块实现,以从它们被调用的位置返回值。

注意 - 在块定义中将字符串替换为字典,因为您从API而不是字符串获取字典。

Learn block syntax