【发布时间】:2016-09-26 06:14:59
【问题描述】:
适用于 Google 表格 API 的 iOS 快速入门: https://developers.google.com/sheets/quickstart/ios?ver=swift
在 Xcode 8 中,该代码适用于 Swift 2,但无法从 GTLRSheets_ValueRange 获取工作表的值。
重现问题:
按照说明创建项目、pod,然后复制粘贴代码。
在项目 Build Settings 中开启“Use Legacy Swift Language Version” - 设置“Yes”并在菜单 Edit/Convert 中选择“To Current Swift Syntax...”
验证应用是否正常运行。
在项目 Build Settings 中关闭“Use Legacy Swift Language Version” - 设置“No”并在菜单 Edit/Convert 中选择“To Current Swift Syntax...”
应用转换更改
验证应用启动,授权谷歌账号并调用“displayResultWithTicket”方法。
预期结果:
下面的指令用结果对象中的值填充变量“rows”
"让 rows = result.values!"
实际结果:
下面的指令抛出错误
"result.values"
但以下说明提供了预期值:
result.range
result.majorDimension
我可以看到结果中的值(在内部结构中)。
同样的例子在 Android 中运行良好。
UPD:添加了带有错误和观察变量的图像:
到目前为止,在这段代码中发现的 Swift 2 和 3 版本之间的唯一区别 - 字段“values”是从 Objective-C 从“NSArray
UPD-2:指令中的错误点。似乎与以下操作有关。我测试了之前报告的错误 - 它们没有被复制。
Swift._arrayForceCast <A, B> (Swift.Array<A>) -> Swift.Array<B>
【问题讨论】:
-
我也在尝试使用这个谷歌的例子,我得到了同样的错误。你想清楚了吗?
-
不,我为这个项目回滚到 Swift 2。我在 Google 的跟踪器上注册了一个勾号,并在 Apple 的开发者论坛上发布了这个问题 - 到目前为止没有任何反馈。
标签: ios swift3 xcode8 google-sheets-api