I am new in swift and creating a network call with below code but getting an "fatal error: unexpectedly found nil while unwrapping an Optional value" please help. Objective C version of this code is working fine for me
class func request(withUrlString urlString: String) -> NSMutableURLRequest
{
let request = NSMutableURLRequest(url: URL(string: urlString)!)
request.addValue("application/json", forHTTPHeaderField:"Accept")
request.httpMethod = "GET"
request.timeoutInterval = 60
return request
}
class func send(_ request: URLRequest, completion callback: @escaping (_: Data, _: Error) -> Void)
{
if WebServiceManager.isInternetAvailable() == false
{
let data: NSData? = nil
callback(data as! Data, NSError(domain:kNetworkErrorMeassage, code:0, userInfo:nil))
return
}
// print("Request# \n URL : \(request.url?.absoluteString) \n Headers : \(request.allHTTPHeaderFields!.description) \n Request Method : \(request.httpMethod) \n Post body : \(request.httpBody ? try? JSONSerialization.jsonObject(withData: request.httpBody, options: []) : request.httpBody)\n")
// print("Request# \n URL : \(request.url?.absoluteString) \n Headers : \(request.allHTTPHeaderFields!.description) \n Request Method : \(request.httpMethod) \n Post body : \(request.httpBody ? String(data: request.httpBody!, encoding: String.Encoding.ascii) : request.httpBody)\n")
UIApplication.shared.isNetworkActivityIndicatorVisible = true
let dataTask : URLSessionDataTask? = URLSession.shared.dataTask(with: request) { (responseData, response, error) in
UIApplication.shared.isNetworkActivityIndicatorVisible = false
let httpResponce: HTTPURLResponse? = (response as? HTTPURLResponse)
let responseStatusCode: Int? = httpResponce?.statusCode
if responseStatusCode == 200 || responseStatusCode == 201 || responseStatusCode == 202
{
DispatchQueue.main.async(execute: {() -> Void in
callback(responseData!, error!)
})
}
else
{
DispatchQueue.main.async(execute: {() -> Void in
let data: NSData? = nil
callback(data as! Data, error!)
})
}
}
dataTask?.resume()
}