gpt4 book ai didi

ios - 由于 GTLRServiceCompletionHandler,无法为 Google Drive REST API 运行 service.executeQuery()

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

我一直在尝试弄清楚如何通过我正在编程的 Swift 应用程序将文件从 iOS 上传到 Google Drive。我对 Swift 和 Objective-C 非常陌生,但出于我正在开发的应用程序的目的,它必须在 Swift 中完成。我按照 Google Drive API 教程在我的应用程序中进行了设置,并且我能够成功登录并列出我的 Google Drive 文件夹中的文件,如 this tutorial 中所述。 .

自从开始工作以来,我一直在尝试将文件从 iOS 上传到 Google 云端硬盘。由于 Google Drive API 文档上没有 Swift 代码向我展示如何执行此操作,因此我尝试严格遵循此 Objective-C 代码 listed here用于基本上传。

我当前的代码如下:

let fileData: Data? = FileManager.default.contents(atPath: "files/photo.jpg")
let metadata = GTLRDrive_File.init()
metadata.name = "photo.jpg"
let uploadParameters = GTLRUploadParameters(data: fileData!, mimeType: "image/jpeg")
uploadParameters.shouldUploadWithSingleRequest = true
let query = GTLRDriveQuery_FilesCreate.query(withObject: metadata, uploadParameters: uploadParameters)
query.fields = "id"
self.service.executeQuery(query, completionHandler: (GTLRServiceTicket, Any?, Error?) -> Void) {
return {
(ticket: GTLRServiceTicket, object: Any?, error: Error?) -> Void in
}
}

我发现了另一篇 SO 帖子,试图通过查看类型别名来解决与此有点类似的问题。当我提取 GTLRServiceCompletionHandler 的类型别名时,我得到的是:

public typealias GTLRServiceCompletionHandler = (GTLRServiceTicket, Any?, Error?) -> Swift.Void

这是显示的 service.executeQuery 的默认函数签名:

service.executeQuery(query: GTLRQueryProtocol, completionHandler: GTLRServiceCompletionHandler?)

在运行代码之前我遇到的当前编译器错误表明,completionHandler 的参数标签与任何可用的重载方法不匹配。我已经在这方面工作了很长时间(而且对 Swift 不太熟悉),所以我不完全确定我能做些什么来让它继续工作。任何帮助将不胜感激。

最佳答案

您可能误解了 completionHandler 的目的,或者对此类调用的语法有困难。您提供一个将在查询完成时执行的闭包。它接受三个类型为 (GTLRServiceTicket, Any?, Error?) 的参数,并且不返回任何内容 (Void)。

您还可以使用尾随闭包语法,这意味着您不需要标记 completionHandler 参数。

把它们放在一起,你会得到类似的东西

self.service.executeQuery(query) { (ticket:GTLRServiceTicket, object:Any?, error:Error?) in
// Put your completion code here
}

关于ios - 由于 GTLRServiceCompletionHandler,无法为 Google Drive REST API 运行 service.executeQuery(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45334952/

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