NextPageToken和文件列表查询

时间:2012-11-13 21:55:57

标签: objective-c google-drive-api google-api-objc-client

我正在使用GoogleDrive Objective-C SDK,而且我遇到了一个问题。我想建立一条路径 - > ID映射结构,所以我要求Drive获取所有用户文件的列表。通常这很好。但是,在用户拥有大量文件的情况下,服务器会返回内部错误。我可以通过将我的GTLQueryDrive上的maxResults属性设置为较低的数字来解决此问题。当我这样做时,一切都按预期工作,除了GTLDriveFileList的nextPageToken(和nextLink)属性为nil。我相信我需要这个nextPageToken继续抓取文件信息。我已经尝试将我的查询中的fields属性设置为nil,将包含nextPageToken的字符串设置为不包含nextPageToken的字符串。在所有情况下,nextPageToken属性似乎为零。有什么我想念的吗?谢谢!

1 个答案:

答案 0 :(得分:-1)

根据评论链添加答案。

这是一个可以试验的小样本。

driveService.shouldFetchNextPages = YES;

GTLQueryDrive *query = [GTLQueryDrive queryForFilesList];
query.maxResults = 5;
// queryTicket can be used to track the status of the request.
[driveService executeQuery:query
    completionHandler:^(GTLServiceTicket *ticket, GTLDriveFileList *files,
                        NSError *error) {
        if (files) {
            NSLog(@"Have response %@", files.items);
            NSLog(@"Token %@", files.nextPageToken);
            NSLog(@"Count %d", files.items.count);
        }
    }];

如果将shouldFetchNextPages设置为YES,则结果将不包含nextPageToken。相反,假设您有超过5个文件(基于maxResults),您仍将获得完整列表,以及日志文件中的消息,该消息将显示为以下内容:

Executing drive.files.list required fetching 4 pages; use a query with a larger maxResults for faster results

如果将shouldFetchNextPages设置为NO,则在这种情况下结果的上限为5,而nextPageToken将具有用于获取结果集中下一页的有效标记。