2016-08-08 20 views
0

Ich entwickle iOS-Anwendung und mit den neuesten Updates i t diesen Fehler gehen: mehrdeutige Verwendung von tiefJSon und Ambiguos Verwendung von tief

für diesen Code:

let json: AnyObject = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) 
return (json[0]) as! NSDictionary 

Gibt es eine Lösung? Danke.

+0

Sie müssen explizit sagen, dass 'json' ein Array ist. – Larme

+0

Versuchen Sie, so zu schreiben 'Rückkehr (json as! NSArray) [0] as! NSDictionary' oder Batter, wenn Sie das swift-Array 'return (json as! [[String: AnyObject]]) [0] als! [String: AnyObject] ' –

Antwort

1

Da Sie mit Anmerkungen versehen json als AnyObject der Compiler nicht in der Lage ist, die Art zu schließen, wenn es sich um eine Dictionary (Schlüssel-Abonnement) ist oder ein Array (Index-Abonnement). Das ist die Mehrdeutigkeit.

Die Lösung ist das Objekt in den richtigen Typ

let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as! [[String:AnyObject]] 
return json[0] 

PS zu werfen: Verwenden Sie immer Swift nativen Sammlung Typen. Die Foundation NSArray und NSDictionary enthalten keine Typinformationen und die Option .MutableContainers wird in den meisten Fällen nicht benötigt.

+0

Danke. Swift für mich ist manchmal noch schwer zu verstehen. –