【问题标题】:Return NSArray in block [duplicate]在块中返回 NSArray [重复]
【发布时间】:2014-06-25 16:02:08
【问题描述】:

如何返回完成块中正在填充的数组?它是一些 JSON 被解析成一个对象数组。

-(NSArray *)GetMapVehiclePoints
{
    NSString *methodURL = [NSString stringWithFormat:@"%@GetMapVehiclePoints", BASE_URL];
   __block NSArray *parsedVehicles = [[NSArray alloc]init];

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    [manager GET:methodURL parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {

        NSArray *vehicles = (NSArray *)responseObject;
        parsedVehicles = [self parseVehicles:vehicles];

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];

    return parsedVehicles;
}

每次我返回这个方法时,我都会得到一个空数组,因为完成块还没有运行。如何返回块内的数组?

【问题讨论】:

    标签: ios objective-c afnetworking objective-c-blocks


    【解决方案1】:

    我要传递的是方法的完成块

    - (void)GetMapVehiclePointsWithCompletion:(void (^)(NSArray *points))completion;
    

    【讨论】:

      【解决方案2】:

      getMapVehiclePoints 不能/不应该返回一个数组。改用回调块...

      typedef void(^CallbackBlock)(id value);
      
      - (void)getMapVehiclePointsWithCallback:(CallbackBlock)callback {
          NSString *methodURL = [NSString stringWithFormat:@"%@GetMapVehiclePoints", BASE_URL];
          AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
          [manager GET:methodURL parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
              if (callback) callback([self parseVehicles:(id)responseObject]);
          } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
              NSLog(@"Error: %@", error);
              if (callback) callback(@[]);
          }];
      }
      

      [self getMapVehiclePointsWithCallback:^(NSArray *vehiclePoints) {
          NSLog(@"%@", vehiclePoints);
      }];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多