2016-05-25 19 views
0

Ich bin neu in Swift und API-Programmierung und leite in den folgenden Fehler:JSON Fehler in schnellen

uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber length]

Das ist die Linie, die diesen Fehler verursacht:

print(json[“totalPostsByUser”])

Für mehr Kontext, das ist ein vollständigeres Codebeispiel:

let jsonStr = NSString(data: request.HTTPBody!, encoding: NSUTF8StringEncoding) 
let task = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in 
    let httpResponse = response as? NSHTTPURLResponse 
    var err: NSError? 

    if httpResponse!.statusCode == 201 { 
     if error == nil { 
     let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding) 
     let jsonData: NSData = jsonStr!.dataUsingEncoding(NSUTF8StringEncoding)! 
     do { 
      if let json: AnyObject = try NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.AllowFragments) { 
       let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) 
       print(responseString) 
       print(json["totalPostsByUser"]) 
       totalPostsByUser = (json["totalPostsByUser"] as? Int)! 
      } 
     } catch let parseError { 
     } 
     } 
    } 
} 
+0

'totalPostsByUser = (json [" totalPostsByUser "] als? Int)!' Sollte entweder 'totalPostsByUser = json [" totalPostsByUser "] sein! Int 'oder 'totalPostsByUser = json [" totalPostsByUser "] als? Int' (Hinweis, die zweite Option ist besser) – Daniel

Antwort

1

Ich denke Sie müssen einig Stück Code mit folgendem Code ersetzen,

if let json: NSMutableDictionary = try NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.AllowFragments) as? NSMutableDictionary 
    { 
       let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) 
       print(responseString) 
       //print(json["totalPostsByUser"]) 
       print(json.valueForKey("totalPostsByUser")) 
       //totalPostsByUser = (json["totalPostsByUser"] as? Int)! 
    } 

Convert ANYOBJECT zu MutableDictionary, die einfach sein werden Wert von Schlüssel zu extrahieren.

Hoffe, das wird Ihnen helfen.

+0

Großartig! Das hat den Trick gemacht. Danke vielmals! – SwiftNewbie

+0

Sie sind herzlich willkommen :) und bitte akzeptieren Sie diese Antwort, so wird es auch für andere hilfreich sein –