Ios 返回块中的NSArray

Ios 返回块中的NSArray,ios,objective-c,afnetworking,objective-c-blocks,Ios,Objective C,Afnetworking,Objective C Blocks,如何返回正在完成块中填充的数组?它是一些JSON被解析成一个对象数组 -(NSArray *)GetMapVehiclePoints { NSString *methodURL = [NSString stringWithFormat:@"%@GetMapVehiclePoints", BASE_URL]; __block NSArray *parsedVehicles = [[NSArray alloc]init]; AFHTTPRequestOperationMana

如何返回正在完成块中填充的数组?它是一些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;
}

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

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(@[]);
    }];
}


我将通过该方法的一个完成块

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