【问题标题】:What is the Swift 3 syntax for creating an AWSTask with a result?使用结果创建 AWSTask 的 Swift 3 语法是什么?
【发布时间】:2017-01-25 06:39:03
【问题描述】:

在 Swift 3 之前,我创建带有结果的 AWSTask 的代码是这样的:

let results = ["resultOne", "resultTwo"]
let task = AWSTask(result: results)

但使用 Swift 3,我从 Xcode 8 收到此错误消息:

无法将类型“[String]”的值转换为预期的参数类型“_?”

还有其他人遇到过这个吗?非常感谢!

【问题讨论】:

  • 试试let results: Any = (["resultOne", "resultTwo"])

标签: aws-sdk swift3 xcode8 aws-sdk-ios


【解决方案1】:

只需像这样添加as NSArray

let results = ["resultOne", "resultTwo"] as NSArray
let task = AWSTask(result: results)

因为results在定义AWSTask时必须确认协议AnyObject

open class AWSTask<ResultType : AnyObject> : NSObject {...}

在 swift 2.2 中,["resultOne", "resultTwo"] 自动连接到 NSArray

但在 swift 3.0 中,您必须手动将 [String] 连接到 NSArray

这是解释:

https://github.com/apple/swift-evolution/blob/master/proposals/0072-eliminate-implicit-bridging-conversions.md

【讨论】:

  • 非常感谢!在阅读您的答案之前,我注意到 NSArray 的演员消除了错误,但您的回答告诉了我原因。
猜你喜欢
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多