如何在Google云端硬盘中按名称查找文件夹?

时间:2016-01-15 07:42:46

标签: ios objective-c google-drive-api

我想继续将ios应用程序的文件放在用户驱动器根目录下的同一子目录中。

我可以创建一个新文件夹,在该新文件夹中创建文件,但我不想负责将我最初创建的文件夹的id保存到永久文件中。必须有一种方法来重新发现同一目录并继续放在其中。然而,API似乎不允许它。如果我得到一个返回GTLDriveChildReference数组的查询,那么似乎没有一个标题字段可以与我要放置文件的目录的标题进行比较。

[GTLQueryDrive *query = [GTLQueryDrive queryForChildrenListWithFolderId:@"root"];
query.q = @"mimeType='application/vnd.google-apps.folder' and 'root' in parents and trashed=false";
[self.driveService executeQuery:query completionHandler::^(GTLServiceTicket *ticket,
                                        GTLDriveChildList *children,
                                        NSError *error) {
  if (nil == error) {
    for (GTLDriveChildReference *child in children) {
      NSLog(@"File Id: %@", child.identifier);
    }
  } else {
    NSLog(@"An error occurred: %@", error);
  }
}];

2 个答案:

答案 0 :(得分:1)

以下是我为最近的项目做的事情,我需要一个名为'new'的文件夹

func getFolderNewID()
{
    // return the ID of the 'new' folder
    // create it if it's not there         
    let query = GTLQueryDrive.queryForFilesList()
    query.q = "'root' IN parents and title = 'new' and trashed = false"

    googleDrive.service.executeQuery(
        query,
        delegate: self,
        didFinishSelector: "returnedFolderForNew:finishedWithObject:error:")
}

func returnedFolderForNew(ticket : GTLServiceTicket, finishedWithObject response : GTLDriveFileList, error : NSError?)
{

    if let _ = error
    {
        return
    }


    if response.items() == nil
    {
        // nothing returned - go create a folder
        createFolderNew()
        return
    }

    for fileItem in response.items()
    {
        googleDrive.folderNew = fileItem.identifier!!
    }
}

一旦你有了fileItem.identifier,就可以在查询中使用它来检查父母中的标识符

答案 1 :(得分:0)

适用于iOS的Google Drive API客户端仍然可以过滤掉查询,因为您可以将mimeType指定为文件夹并使用其名称进行查询。