Ios 具有完成处理程序的方法

Ios 具有完成处理程序的方法,ios,objective-c,block,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){ JS

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

- (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{
    }];

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

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

viewDidLoad

[ObjOfSecondClass getTableData:BILL withCompletionHandler:^(NSString* returnString){
}];
处理程序
用于块实现从调用它们的位置返回值

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


您想在回调中得到什么?NSDictionary*JSON;我还没有真正理解你的问题。你能更具体一点吗?如果我没弄错的话,你想创建一个静态方法。静态方法是通过使用
+
标记:
+(void)getTableData:(NSString*)URL withCompletionHandler:(void(^)(NSString*))处理程序定义的将完成处理程序定义更改为withCompletionHandler:(void(^)(nsDictionary*)句柄。当前仅返回字符串。