【发布时间】:2015-04-28 03:02:42
【问题描述】:
我正在尝试从 Facebook 获取“taggable_friends”列表,其中可能有 1000 多个可标记朋友,因此 Facebook 对结果进行了分页。方法如下。
-(void)getsFbTaggableFriends:(NSString *)nextCursor dicFBFriends:(NSMutableArray *) dicFriends failure:(void (^) (NSError *error))failureHandler
{
NSString *qry = @"/me/taggable_friends";
NSMutableDictionary *parameters;
if (nextCursor == nil) {
parameters = nil;
}
else {
parameters = [[NSMutableDictionary alloc] init];
[parameters setValue:nextCursor forKey:@"next"];
}
[FBRequestConnection startWithGraphPath:qry
parameters:parameters
HTTPMethod:@"GET"
completionHandler:^(
FBRequestConnection *connection,
id result,
NSError *error
) {
if (error) {
NSLog(@"%@", [error localizedDescription]);
}else {
/* handle the result */
NSMutableDictionary *mDicResult = [[NSMutableDictionary alloc]initWithDictionary:result];
for (NSDictionary * fbItem in [mDicResult valueForKey:@"data"])
{
[dicFriends addObject:fbItem];
}
// if 'next' value is found, then call recursively
if ([[mDicResult valueForKey:@"paging"] objectForKey:@"next"] != nil) {
NSString *nextCursor = mDicResult[@"paging"][@"next"];
NSLog(@"next:%@", [nextCursor substringFromIndex:27]);
[self getsFbTaggableFriends:nextCursor dicFBFriends:dicFriends failure:^(NSError *error) {
failureHandler(error);
}];
}
}
}];
}
问题: 我在“结果”对象中获得前 1000 条记录,并且“下一个”键的值作为递归调用的“参数”参数传递。但是,第二次迭代不会分页并继续返回相同的 1000 条记录。
我还尝试将nextCursor 值用作第二次调用的startWithGraphPath 参数。这导致了一个不同的响应对象,其中的键如 og_object、share、id 而不是 data 和 paging。
请帮助正确地逐页获取可标记的朋友,只要响应对象中存在“下一个”值即可。谢谢。
【问题讨论】:
-
iOS SDK 的 facebook API 文档是否说明了如何处理分页?这是 SDK 3.x 还是 4.x?
标签: ios facebook facebook-graph-api pagination next