gpt4 book ai didi

ios - Google Drive API (GTL) - 按顺序创建多个文件夹路径?

转载 作者:行者123 更新时间:2023-11-30 14:18:25 25 4
gpt4 key购买 nike

我正在使用Google APIs Client Library for Objective-C (GTL) 访问 Google Drive API .

据其Introduction to the Google APIs Client Library for Objective-C ,

Query execution by the service is inherently asynchronous.

这意味着当您尝试创建类似:root/a/b/c 的路径时,在创建文件夹 b 之前,您必须:

  1. 确保 a 已创建,如果没有,请在 b 尝试检查其 parentRef 之前创建它。

  2. 了解文件夹 aid,以便您可以在其中创建 b

同样适用于c

我使用类似以下内容的方法来按已知父文件夹 ID 内的名称获取文件夹的 id:

    // Get parentID by name "parent".

let query = GTLQueryDrive.queryForChildrenListWithFolderId(parentID)
query.q = "mimeType='application/vnd.google-apps.folder' and '\(parentID)' in parents and trashed=false and title='\(name)'"

query.maxResults = 1

GTLFileTicket = GTLDriveService.executeQuery(
query,
completionHandler: {(
ticket: GTLServiceTicket!,
object: AnyObject!,
error: NSError!) -> Void in

// Callback
self.GTLFileTicket = nil
if error == nil {
// Get the id from the object. If nil make another query to create a folder named "name" within folder "parentID".
} else {
// error handles here.
}
})

在项目的其他部分,我在 for 循环中调用了上述方法:

var parent = "root"
for item in array {
createFolderIfNotExisted(item, parent: parent)
parent = item
}

显然,它会失败并最终仅创建第一个文件夹,因为第二个查询在第一个查询完成之前就开始了。我用谷歌搜索了一下,但没有找到一种方法来使其同步调用。 (我看到 Java API 分支可以有类似 .await() 的东西?)

有没有办法确保调用可以按顺序执行?

最佳答案

避免使用同步 for 循环。 createFolder 函数应该在完成时回调;该回调应该开始下一个循环迭代。

关于ios - Google Drive API (GTL) - 按顺序创建多个文件夹路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30835167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com