适用于iOS的SDK 3.0 Beta中的FQL

时间:2012-07-14 22:18:09

标签: ios facebook-fql facebook-ios-sdk fql.multiquery

我无法在适用于iOS的新3.0 Beta SDK中的任何位置找到requestWithMethodName方法。你们放弃它了吗?如果是这样,我们现在应该如何向API发送fql查询? 或者那些被弃用的人?

1 个答案:

答案 0 :(得分:5)

您可以使用以下方法使用方法名称发出请求:

[[[FBRequest alloc] initWithSession:...
                         restMethod:... 
                         parameters:... 
                         HTTPMethod:...]
 startWithCompletionHandler:...];

但是,您也可以使用FQL图形对象进行FQL查询,如下所示:

FBRequest *fql = [FBRequest requestForGraphPath:@"fql"];
[fql.parameters setObject:@"SELECT uid, name, pic_square FROM user WHERE uid = me()"
                          @"OR uid IN (SELECT uid2 FROM friend WHERE uid1 = me())"
                   forKey:@"q"];

[fql startWithCompletionHandler:^(FBRequestConnection *connection, 
                                  id result, 
                                  NSError *error) {
    if (result) {
        NSLog(@"result:%@", result);
    }
}];

最后,如果要批量处理多个请求,而不是在FBRequest对象上调用start,则可以在调用start之前创建一个FBRequestConnection对象并添加多个请求,如下所示:

FBRequestConnection *conn = [[FBRequestConnection alloc] init];
[conn addRequest:fqlRequest1 completionHandler:^(FBRequestConnection *connection, 
                                                 id result,
                                                 NSError *error) {
    if (result) {
        NSLog(@"result:%@", result);
    }
}];

[conn addRequest:fqlRequest2 completionHandler:^(FBRequestConnection *connection,
                                                 id result,
                                                 NSError *error) {
    if (result) {
        NSLog(@"result:%@", result);
    }
}];

[conn start];

SDK负责将请求序列化为对服务器的单个批处理请求,以及解析响应并使用匹配的结果或错误调用正确的处理程序。

注意

如果您可以使用图形或其他API来获得相同的结果,则使用图形API比使用其余API更受欢迎。我们正在弃用旧的其余API