Swift3关闭崩溃
问题描述:
,而与完成处理Swift3关闭崩溃
func sessionTaskPostRequest (_ urlRequest : URLRequest , responseHandler: @escaping ResponseHandler) -> URLSessionTask {
// 5
let sesstionTask : URLSessionTask = networkSession.dataTask(with: urlRequest, completionHandler: { (data : Data? , urlResponse : URLResponse? , error : NSError?) in
var json: NSDictionary!
do {
json = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions()) as? NSDictionary
} catch {
print(error)
}
// Did the JSONObjectWithData constructor return an error? If so, log the error to the console
if(error != nil) {
responseHandler (false , nil , error , nil)
}
else {
// The JSONObjectWithData constructor didn't return an error. But, we should still
// check and make sure that json has a value using optional binding.
if let parseJSON = json {
let errorJSON = parseJSON ["Err"] as! String
if !errorJSON.isEmpty {
responseHandler (false , nil , nil , errorJSON)
}else {
responseHandler (true , parseJSON , nil , nil)
}
print("Succes: \(parseJSON)")
}
else {
// Woa, okay the json object was nil, something went worng. Maybe the server isn't running?
let jsonStr = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
responseHandler (false , nil , error , "Error could not parse JSON")
print("Error could not parse JSON: \(jsonStr)")
}
}
} as! (Data?, URLResponse?, Error?) -> Void)
return sesstionTask
}
,创造了一个返回响应JSON对象响应处理一个类型别名创建URLSessionTask的实例崩溃。类型别名如下
typealias ResponseHandler = (_ successFlag :Bool , _ data : NSDictionary? , _ errorObject : NSError? , _ errorString : String?) -> Void
答
好像响应处理越来越Error对象为NSError将得到坠毁,如果错误的对象是零,未能将它转换为NSError
错误=零 ,当你收到它作为NSError类型转换失败,因为nil对象,但同样的事情明智地处理,如果你不做任何类型转换
你在哪一行崩溃 – Avt
} as! (Data?,URLResponse ?,错误?) - > Void) –