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