在使用Alamofire进行json解析时获取AppDelegate错误

在使用Alamofire进行json解析时获取AppDelegate错误

问题描述:

从下面的代码中,它不显示任何错误,但它运行时appDelegate错误,其原因是由于未捕获的异常'NSInvalidArgumentException'而终止应用程序。请告诉我想要做的就是摆脱这种...在使用Alamofire进行json解析时获取AppDelegate错误

var urlstring: String! 

    urlstring = "\(signInAPIUrl)rooms/room_type" 
    urlstring = urlstring.replacingOccurrences(of: "Optional(", with: "") 
    urlstring = urlstring.replacingOccurrences(of: ")", with: "") 
    urlstring = urlstring.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)! 

    print(urlstring) 
    self.callSiginGBAPI(url: "\(urlstring!)") 
     } 
func callSiginGBAPI(url : String){ 

    print("url: \(url)") 

    Alamofire.request(url).responseJSON { (response) in 

     self.parseDataGB(JSONData: response.data!) 

     print("Response:\(response)") 

    } 

} 
func parseDataGB(JSONData : Data){ 

    do{ 

     let readableJSon = try JSONSerialization.jsonObject(with: JSONData, options: .mutableContainers) as! jsonSTD 

     print(" !!! \(readableJSon[0])") 

     let value = readableJSon[0] as AnyObject 

     if let final = value.object(forKey: "id") 
     { 
      print(final) 

      let first_name:String = value.object(forKey: "id") as! String 
      let last_name:String = value.object(forKey: "type") as! String 
      let list_type:String = value.object(forKey: "list_type") as! String 
      print(first_name) 
      print(last_name) 
      print(list_type) 

     } else{ 
     } 
    } 
    catch{ 

     print(error) 

    } 

} 
+0

有将更多的是异常信息。还要设置一个异常断点来标识它崩溃的那一行 – Paulw11

使用以下扩展到数据转换成JSON对象:

响应
extension Data { 
     func JSONObject() -> AnyObject? { 
     do { 
      let content = try JSONSerialization.jsonObject(with: self as Data, options: JSONSerialization.ReadingOptions.allowFragments) 
      return content as AnyObject? 
     } catch _ as NSError { 
      return nil 
     } 
    } 

    var string: String { 
     return String(data: self as Data, encoding: String.Encoding.utf8) ?? "Error: Not able to get string from the data." 
    } 

} 

let info = response.data?.JSONObject()