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