用于创建带结果的AWSTask的Swift 3语法是什么?

Mar*_*vie 4 aws-sdk swift3 xcode8 aws-sdk-ios

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

let results = ["resultOne", "resultTwo"]
let task = AWSTask(result: results)
Run Code Online (Sandbox Code Playgroud)

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

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

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

bee*_*ven 5

只需添加as NSArray如下:

let results = ["resultOne", "resultTwo"] as NSArray
let task = AWSTask(result: results)
Run Code Online (Sandbox Code Playgroud)

因为在定义AWSTask时results必须对Protocol AnyObject进行确认:

open class AWSTask<ResultType : AnyObject> : NSObject {...}
Run Code Online (Sandbox Code Playgroud)

在swift 2.2中["resultOne", "resultTwo"]是auto brige to NSArray,

但在SWIFT 3.0您必须brige是[String]NSArray手动.

这是解释:

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