sto usando Xcode 6.4Convertire Swift Array al dizionario con gli indici
Ho una serie di UIViews e voglio convertire in un dizionario con le chiavi "v0", "v1"...
. Così:
var dict = [String:UIView]()
for (index, view) in enumerate(views) {
dict["v\(index)"] = view
}
dict //=> ["v0": <view0>, "v1": <view1> ...]
Questo funziona, ma sto cercando di farlo in uno stile più funzionale. Immagino che mi infastidisca il fatto che devo creare la variabile dict
. Mi piacerebbe usare enumerate()
e reduce()
in questo modo:
reduce(enumerate(views), [String:UIView]()) { dict, enumeration in
dict["v\(enumeration.index)"] = enumeration.element // <- error here
return dict
}
Questo si sente più bello, ma sto ottenendo l'errore: Cannot assign a value of type 'UIView' to a value of type 'UIView?'
Ho provato questo con oggetti altri un UIView
(es: [String] -> [String:String]
) e ottengo lo stesso errore.
Qualche suggerimento per la pulizia?
non posso credere che questo lo fissa ! Hai idea del motivo per cui funziona? La maggior parte della documentazione che ho visto sulle chiusure ha omesso 'var' nei parametri. – Adam
dict è una costante di default. Se vuoi cambiarlo devi dichiararlo come variabile. :) –
Ah, questo ha perfettamente senso. Grazie mille, sono stato a questo per troppo tempo stasera :) – Adam