Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 返回数组时不兼容的块指针类型?_Ios_Objective C_Parse Platform_Objective C Blocks - Fatal编程技术网

Ios 返回数组时不兼容的块指针类型?

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

我在parse.com上有一个食物对象数据库,我试图返回一个包含所有食物的数组

- (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属性,当它在后台填充时,您可以调用一个方法来处理新填充的数据。看看这个问题/答案