螺栓框架中的FBSDKGraphRequest从不调用块

Sco*_*zie 7 ios parse-platform bolts-framework

我有以下代码:

[[[PFFacebookUtils logInInBackgroundWithAccessToken:[FBSDKAccessToken currentAccessToken]] continueWithSuccessBlock:^id(BFTask *task) {

    PFUser *user = task.result;

    return user;

}] continueWithSuccessBlock:^id(BFTask *task) {

    BFTaskCompletionSource *source = [BFTaskCompletionSource taskCompletionSource];

    FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil];

    [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {

        if (error) {
            [source setError:error];
            return;
        }

        [source setResult:result];
    }];

    return source.task;
}];
Run Code Online (Sandbox Code Playgroud)

FBSDKGraphRequest在Bolts任务之外工作正常,但在任务内部没有调用startWithCompletionHandler.

有任何想法吗?

yuh*_*hua 20

我找到了一个解决方法.只需将其包装在主线程块中即可.它会像魅力一样工作.

dispatch_async(dispatch_get_main_queue(), ^{
    FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil];

    [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {

        if (error) {
            [source setError:error];
            return;
        }

        [source setResult:result];
    }];
});
Run Code Online (Sandbox Code Playgroud)

  • 这是一个巨大的修复.应该有更多的赞成票.谢谢@yuhua! (3认同)