2015-11-06 30 views
6

che sto cercando di fare questo ma è diceSwift For Loop Valore di tipo "AnyObject?" non ha alcun membro 'Generator'

valore di tipo 'ANYOBJECT?' non ha un membro 'Generator'

Quindi questo è il mio codice.

let dataDictionary:NSDictionary = try NSJSONSerialization.JSONObjectWithData(responseObject as! NSData, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary 
       var customerArray = dataDictionary.valueForKey("kart") 
       for js: NSDictionary in customerArray { 
        let nameArray: NSArray = js.valueForKey("name") 
       } 

Che cosa sto facendo male. Non ho capito. Grazie per il vostro aiuto.

risposta

8

Il tuo customerArray è un Opzionale, ha il tipo AnyObject? (questo perché .valueForKey restituisce un Opzionale). Non è possibile eseguire il loop su un Opzionale. Soluzione è quello di gettare il risultato come un array mentre scartare sicuro:

if let customerArray = dataDictionary.valueForKey("kart") as? NSArray { 
    for js in customerArray { 
     let nameArray = js.valueForKey("name") 
     // ... 
    } 
} 
+0

Grazie che hanno lavorato –

+0

Sei il benvenuto. – Moritz

0

'successo perché valueForKey metodo restituisce Optional valore AnyObject tipo (AnyObject?). Infatti, AnyObject non ha un membro Generator e non può essere utilizzato nel ciclo for..in (come pure un valore Optional). Quindi, si dovrebbe scartare valore opzionale per gettarlo ai tipo previsto, in questo modo:

let dataDictionary:NSDictionary = try NSJSONSerialization.JSONObjectWithData(responseObject as! NSData, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary 
var customerArray = dataDictionary.valueForKey("kart")! as! [NSDictionary] 
for js: NSDictionary in customerArray { 
    let nameArray = js.valueForKey("name") as! NSArray 
} 
Problemi correlati