Ios 返回块中的NSArray
如何返回正在完成块中填充的数组?它是一些JSON被解析成一个对象数组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
-(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;