2016-09-16 1 views
4

Avant Swift 3, mon code pour créer un AWSTask avec un résultat était quelque chose comme ceci:Quelle est la syntaxe de Swift 3 pour créer un AWSTask avec un résultat?

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

Mais en utilisant Swift 3, je reçois ce message d'erreur de Xcode 8:

Impossible de convertir la valeur de type '[String]' au type d''argument attendu' _? '

Est-ce que quelqu'un d'autre est tombé dessus? Merci beaucoup!

+0

essayer 'laisser les résultats: Any = ([ "resultOne", "resultTwo"])' –

Répondre

5

Ajoutez simplement as NSArray comme ceci:

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

Parce que results doit confirmer au protocole AnyObject lorsque définir AWSTask:

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

Dans rapide 2.2 ["resultOne", "resultTwo"] est brige automatique à NSArray,

Mais dans Swift 3.0, vous devez brige [String] à NSArray manuellement.

Voici l'explication:

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

+0

Merci beaucoup! Avant de lire votre réponse, j'ai remarqué que la distribution à NSArray s'est débarrassée de l'erreur, mais votre réponse m'a appris pourquoi. –