2014-04-28 31 views
0

我有下面的代碼,其中列出了在根目錄下的文件,但沒有列出任何根的子文件夾:iOS版谷歌硬碟SDK獲取子文件夾ID

NSString *parentId = @"root"; 

GTLQueryDrive *queryDrive = [GTLQueryDrive queryForFilesList]; 
queryDrive.q = [NSString stringWithFormat:@"'%@' in parents and trashed=false", parentId]; 

[self.driveService executeQuery:queryDrive completionHandler:^(GTLServiceTicket *ticket,GTLDriveFileList *files,NSError *error) 
{ 
    if (error == nil) 
    { 
     NSLog(@"Number of files: %i", [files.items count]); 

     NSLog(@"Have results"); 
     // Iterate over files.items array 
     for(GTLDriveFile *file in files) 
     { 
      NSLog(@"File Title: %@ | ID: %@",file.title, file.identifier); 
     } 
    } 
    else 
    { 
     NSLog(@"An error occurred: %@", error); 
    } 
}]; 

此列出了我在文件夾中有7個文件,但與7個文件處於同一級別,我有一個子文件夾。

例如:

根 - >文件1 根 - >文件2 ...等 都回來

但根 - > MyFolder文件並不在結果集中可以上市。

任何想法?

+0

好了,所以我找到了解決辦法。我試圖獲取ID的子文件夾是手動創建的。我試着在代碼中創建一個子文件夾,現在該子文件夾顯示出來了。所以,通過在代碼中創建文件夾,我能夠做我需要做的事情。 – Jesse

+0

對於現有的子文件夾,您可以枚舉'mimeType = application/vnd.google-apps.folder'所有具有'parentID ='root''的'GTLDriveFile' - 爲每個應用類型的子查詢... GTLQueryDrive *查詢= [GTLQueryDrive queryForChildrenListWithFolderId:file.identifier];',然後'[ executeQuery:query completionHandler:^(GTLServiceTicket * ticket,GTLDriveChildList * driveFolderChildren,NSError * error){}]'。 – andrewbuilder

回答

0

您可能想檢查一下如何驗證應用程序。如果您僅將應用程序的文件作爲示波器進行身份驗證,則不會在您的應用程序之外看到其他文件和文件夾。

當你像這樣驗證:

self.gDriveAuthenticationViewController = GTMOAuth2ViewControllerTouch(scope:kGTLAuthScopeDrive, 
     clientID:clientId, 
     clientSecret:clientSecret, 
     keychainItemName:keychainName, 
     delegate:self, 
     finishedSelector:"viewController:finishedWithAuth:error:") 

使用範圍:kGTLAuthScopeDrive代替kGTLAuthScopeDriveFile