Ios 返回数组时不兼容的块指针类型?
我在parse.com上有一个食物对象数据库,我试图返回一个包含所有食物的数组Ios 返回数组时不兼容的块指针类型?,ios,objective-c,parse-platform,objective-c-blocks,Ios,Objective C,Parse Platform,Objective C Blocks,我在parse.com上有一个食物对象数据库,我试图返回一个包含所有食物的数组 - (NSArray*) allFoods { NSMutableArray *foodArr = [NSMutableArray array]; PFQuery * foodQuery = [PFQuery queryWithClassName:@"Food"]; foodQuery.limit = 5000; [foodQuery findObjectsInBackgroundW
- (NSArray*) allFoods {
NSMutableArray *foodArr = [NSMutableArray array];
PFQuery * foodQuery = [PFQuery queryWithClassName:@"Food"];
foodQuery.limit = 5000;
[foodQuery findObjectsInBackgroundWithBlock:^(NSArray * foods, NSError * error) {
for (PFObject *foodRaw in foods) {
MenuItem *food = [[MenuItem alloc] initWithName:[foodRaw valueForKey:@"name"] andURL:nil];
[foodArr addObject:food];
}
return foodArr;
}];
}
但是,该块需要void,我无法包含return语句而不会导致错误
不兼容的块指针类型将'NSMutableArray*(^)(NSArray*\uuu-strong,NSError*\uu-strong)'发送到'PFArrayResultBlock'(也称为'void(^)(NSArray*\uu-strong,NSError*\uu-strong)'类型的参数。
您应该使用类似于以下内容:
typedef void (^ArrayResponseBlock)(NSArray *array);
- (void) allFoodsAsyncWithCompletion:(ArrayResponseBlock)completionBlock {
NSMutableArray *foodArr = [NSMutableArray array];
PFQuery * foodQuery = [PFQuery queryWithClassName:@"Food"];
foodQuery.limit = 5000;
[foodQuery findObjectsInBackgroundWithBlock:^(NSArray * foods, NSError * error) {
for (PFObject *foodRaw in foods) {
MenuItem *food = [[MenuItem alloc] initWithName:[foodRaw valueForKey:@"name"] andURL:nil];
[foodArr addObject:food];
}
completionBlock(foodArr);
}];
}
我认为您最好在类中创建Foodar属性,当它在后台填充时,您可以调用一个方法来处理新填充的数据。看看这个问题/答案