2016-06-28 56 views
6

Ho difficoltà a costruire questo dizionario. Il mio codice è simile al seguente:Swift: il tipo contestuale 'AnyObject' non può essere utilizzato con il dizionario letterale

var array: [String] = [] 
let params: [String: AnyObject] = [ 
    "presentation": [ 
      "array": array, 
      "current_index": 0 
    ] 
] 

L'errore si presenta nella prima riga "presentation": [ con tipo contestuale 'ANYOBJECT' non può essere utilizzato con il dizionario letterale. Ho provato a riscrivere la matrice, inizializzando i parametri, quindi impostando i valori, ecc. Ecc. E non riesco a capire questo problema. Qualsiasi aiuto sarebbe fantastico!

Grazie in anticipo!

+0

A seconda di quello che stai cercando di fare con params, credo che si potrebbe anche fare: lasciare params: [String: Qualsiasi] Questo darebbe più libertà in quanto qualsiasi riguarderebbe sia il valore che i tipi di riferimento. Naturalmente è sempre meglio per me più specifico, come indicato nella risposta accettata. – ProgrammierTier

risposta

3

Prova questa

let params: [String: [String: AnyObject]]

e chiudere le virgolette dopo che il tasto current_index.

+0

L'errore di citazione era solo un errore di battitura quando si ridigitava il codice in StackOverflow, ma grazie che ha funzionato! – Kiley

6

Prova questa a Swift 3 funziona

var array: [String] = [] 
let params: [String: AnyObject] = [ 
    "presentation": [ 
      "array": array, 
      "current_index": 0 
    ] as AnyObject 
] 
+3

Si prega di aggiungere qualche spiegazione al codice di ciò che fa, questo aiuterà anche i futuri visitatori. – kayess

+2

La sintassi è come sopra riportata in swift 3 - il nome var avrà il tipo di dati String - con Anyobject, e il valore della var avrà anche un alias - come AnyObject alla fine –