无法识别完成块 return 类型

Completion block return type not recognized

我正在制作我的第一个完成块,但出于某种原因它无法识别 return 类型,因此我无法将值传回方法调用。

这是我的 header 声明

+(void)downloadVenues:(void (^)(NSArray *myVenues, NSError *error))block;

这是我的实现

+(void)downloadVenues:(void (^)(NSArray *myVenues, NSError *error))block{


//download scenes
PFQuery *query = [PFQuery queryWithClassName:@"Venues"];
[query orderByDescending:@"createdAt"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (error) {
        NSLog(@"Error: %@ %@", error, [error userInfo]);
    }
    else {
        // We found messages!
        myVenues = objects;


        NSLog(@"Retrieved %lu messages", (unsigned long)[myVenues count]);




    }
}];

这里在另一个文件中调用它

//download venues
[Venue downloadVenues:^(NSArray *myVenues, NSError *error){
    if (error) {
        NSLog(@"Error: %@ %@", error, [error userInfo]);
    }
    else {

    NSLog(@"myObjects are: %@", myVenues);
    _venues = myVenues;

    [self loadAnnotations];

    }
}];

出于某种原因,它无法在实现中识别 myVenues。为什么以及如何解决这个问题?谢谢

您的实现从不调用完成块。 这是你应该做的:

+(void)downloadVenues:(void (^)(NSArray *myVenues, NSError *error))block{


//download scenes
PFQuery *query = [PFQuery queryWithClassName:@"Venues"];
[query orderByDescending:@"createdAt"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (error) {
        NSLog(@"Error: %@ %@", error, [error userInfo]);
        block(nil, error);
    }
    else {
        // We found messages!
        block(objects, nil);


        NSLog(@"Retrieved %lu messages", (unsigned long)[myVenues count]);




    }
}];