Casting JSON-Daten in Swift
Ich bin immer einige JSON-Daten von einem server, ich habe analysiert, um ein Wörterbuch. Jetzt möchte ich, um die Daten aus dem Wörterbuch und warf es verschiedene Arten, aber ich bekomme einige Fehler.
Habe ich versucht,
let manager = AFHTTPRequestOperationManager()
manager.requestSerializer = AFJSONRequestSerializer()
manager.GET(
"http://localhost/example/jsonpage",
parameters: nil,
success: { (operation: AFHTTPRequestOperation!,
responseObject: AnyObject!) in
if let data = responseObject as? Dictionary<String, AnyObject> {
let id = data["id"] as? Int
let persons = data["persons"] as? Dictionary<String, AnyObject>
}
},
failure: { (operation: AFHTTPRequestOperation!,
error: NSError!) in
println("Error: " + error.localizedDescription)
}
)
Diese gibt mir eine Fehlermeldung:
let id = data["id"] as? Int
let persons = data["persons"] as? Dictionary<String, AnyObject>
Fehler:
Could not find an overload for 'subscript' that accepts the supplied arguments
- können Sie uns zeigen, wie man das Parsen von JSON?
- Aktualisiert die Frage mit noch mehr von dem code.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
responseObject
ist der TypNSDictionary
und unterstützt JSON-Wert-Typen sind NSDictionary, NSArray, NSString, NSNumber. Casting-Wörterbuch keine cast Ihre Werte in den richtigen Typ. Sie müssen wandeln Sie die Werte einzeln.fatal error: value failed to bridge from Objective-C type to a Swift type
beiif let nsid = data["id"] as? NSNumber {
Hinzufügen ein Zwischenprodukt umgewandelt NSNumber oder NSDictionary bzw. wird der Fehler behoben, und erreicht genau die Besetzung, die Sie wollen:
Den Sie eingegeben haben
responseObject
alsDictionary<String, AnyObject>
— Bedeutung dieses Wörterbuch kann nur die Objekte als Werte; aber eineInt
ist nicht ein Objekt, sondern eine Struktur.Daher müssen Sie nur ändern Sie Ihren code mithilfe
Any
statt (Any
ist eine Klasse, die ein Objekt oder struct):fatal error: value failed to bridge from Objective-C type to a Swift type
beilet id...
undlet persons...