【问题标题】:Getting an AppDelegate Error while json parsing using Alamofire使用 Alamofire 解析 json 时出现 AppDelegate 错误
【发布时间】:2017-05-03 11:24:53
【问题描述】:

从下面的代码中它没有显示任何错误,但它得到运行时 appDelegate 错误,其原因是由于未捕获的异常“NSInvalidArgumentException”而终止应用程序。请告诉我我想做什么来摆脱这个......

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)

    }

}

【问题讨论】:

  • 会有更多的异常信息。还要设置一个异常断点来识别它在哪一行崩溃

标签: ios json swift3 alamofire


【解决方案1】:

使用以下扩展将数据转换为 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() 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    相关资源
    最近更新 更多