2

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

4

1 回答 1

-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 将具有用于获取结果集中的下一页的有效令牌。

于 2012-11-15T19:03:44.870 回答