2015-11-06 16 views
6

を持っていない私はこれを行うにしようとしていますが、それはタイプのSwift For Loopタイプ 'AnyObject?'の値何のメンバーのジェネレータ "

バリュー言うの「ANYOBJECT?」メンバー 'Generator'はありません

これは私のコードです。

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") 
       } 

私はwrong.Iをやっていることはあなたの助けのためにあなたをout.Thank理解しませんでした。

答えて

8

customerArrayはオプションです。AnyObject?のタイプです(これは.valueForKeyがオプションを返すためです)。オプションでループすることはできません。溶液は、安全なアンラッピングしながら配列として結果をキャストすることである。

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

ありがとうございました –

+0

よろしくお願いします。 – Moritz

0

valueForKey方法はAnyObjectタイプ(AnyObject?)のOptional値を返すので、それが起こりました。実際には、AnyObjectGeneratorのメンバーを持たず、ループ(およびOptionalの値)で使用することはできません。したがって、オプションの値をアンラップして、次のように予想されるタイプにキャストする必要があります。

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 
}