swift中的JSON错误

时间:2016-05-25 05:34:49

标签: json xcode swift

我是Swift和API编程的新手,遇到以下错误:

  

未捕获的异常' NSInvalidArgumentException',原因:   ' - [__ NSCFNumber长度]

这是导致此错误的行:

print(json[“totalPostsByUser”])

有关更多上下文,这是一个更完整的代码示例:

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 {
         }
      }
   }
}

1 个答案:

答案 0 :(得分:1)

我认为你需要用下面的代码替换一些代码,

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

将anyObject转换为MutableDictionary,这将很容易从key中提取值。

希望这会对你有所帮助。