gpt4 book ai didi

转换为 Swift 3 后,适用于 Google Sheets API 的 iOS QuickStart 失败

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:03:45 24 4
gpt4 key购买 nike

适用于 Google 表格 API 的 iOS 快速入门: https://developers.google.com/sheets/quickstart/ios?ver=swift

在 Xcode 8 中,代码可与 Swift 2 一起使用,但无法从 GTLRSheets_ValueRange 获取工作表的值。

重现问题:

  1. 按照说明创建项目、pod,然后复制粘贴代码。

  2. 在项目 Build Settings 中打开“Use Legacy Swift Language Version”——设置“Yes”并在菜单“Edit/Convert”中选择“To Current Swift Syntax...”

  3. 验证应用程序是否正常工作。

  4. 在项目 Build Settings 中关闭“Use Legacy Swift Language Version”——设置“No”并在菜单“Edit/Convert”中选择“To Current Swift Syntax...”

  5. 应用转换更改

  6. 验证应用程序启动、授权到 google 帐户并调用方法“displayResultWithTicket”。

预期结果:

下面的指令用结果对象中的值填充变量“行”

“让行数 = result.values!”

实际结果:

下面的指令抛出错误

"result.values"

但是以下说明提供了预期值:

result.range
result.majorDimension

我可以在结果中看到值(在内部结构中)。

同样的示例在 Android 中运行良好。

UPD:添加了错误的图像并观察变量:

Error and variable list

到目前为止,在此代码中发现的 Swift 2 和 3 版本之间的唯一区别 - 字段“values”是从 Objective-C 从“NSArray *values”转换为“[[AnyObject]]?” (在 Swift 2 中)和“[[Any]]?” (在 Swift 3 中): SE-0116

enter image description here

UPD-2:指令中的错误点。似乎与以下操作有关。我测试了较早报告的错误 - 它们没有被重现。

Swift._arrayForceCast <A, B> (Swift.Array<A>) -> Swift.Array<B>

enter image description here

enter image description here

enter image description here

最佳答案

转换原始 JSON 值似乎可以解决此错误

guard let rows = result.jsonValue(forKey: "values") as? [[String]] else
{
// Shouldn't happen, but handle error case just in case
}

// Use rows: [[String]]

关于转换为 Swift 3 后,适用于 Google Sheets API 的 iOS QuickStart 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39695822/

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