Каков синтаксис Swift 3 для создания AWTask с результатом?

До Swift 3 мой код для создания AWTask с результатом был примерно таким:

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

Но используя Swift 3, я получаю это сообщение об ошибке от Xcode 8:

Не удается преобразовать значение типа «[String]» в ожидаемый тип аргумента «_?»

Кто-нибудь еще сталкивался с этим? Спасибо большое!


person Mark Mckelvie    schedule 16.09.2016    source источник
comment
попробуй let results: Any = (["resultOne", "resultTwo"])   -  person serg_zhd    schedule 17.09.2016


Ответы (1)


Просто добавьте as NSArray следующим образом:

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

Поскольку results должен подтвердить протокол AnyObject при определении AWTask:

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

person beeth0ven    schedule 18.09.2016
comment
Спасибо большое! Прежде чем прочитать ваш ответ, я заметил, что приведение к NSArray избавилось от ошибки, но ваш ответ научил меня, почему. - person Mark Mckelvie; 18.09.2016