【问题标题】:Completion block return type not recognized完成块返回类型无法识别
【发布时间】:2015-12-22 23:50:44
【问题描述】:

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

这是我的标题声明

+(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。为什么以及如何解决这个问题?谢谢

【问题讨论】:

  • 首先,您缺少完成块的 cal。其次,你是什么意思“它在实现中没有识别myVenues”

标签: ios objective-c block class-method


【解决方案1】:

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

+(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]);




    }
}];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多