4

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

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

但是使用 Swift 3,我从 Xcode 8 收到了这个错误消息:

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

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

4

1 回答 1

5

只需as NSArray像这样添加:

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

因为在定义 AWSTask 时results必须对 Protocol 进行确认: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

于 2016-09-18T07:18:00.307 回答