when use swift give data via post json server fatal error:
unexpectedly found nil while unwrapping optional value.
i not sure if way passing json library dictionary or problem when sending server since not have access see server php code.
i not sure how
nsjsonserialization.jsonobjectwithdata(data, options: .mutableleaves, error: &err) as! nsarray
works.
i create json dictionary
func parseexportdb() -> [anyobject]{ var exportdict: [anyobject] = [] tuple in export { var dictobj = [ "phoneid": "petrjanata", "loclabel": tuple[crosslocation], "latitude": "123", "longitude": "-123", "time" : tuple[time], "heading" : tuple[heading] ] exportdict.append(dictobj) println(dictobj) } return exportdict }
i take exportdict
json array object , pass function:
func sendjsontoserver(exportlist: anyobject){ var request = nsmutableurlrequest(url: nsurl(string: "http://atonal.ucdavis.edu/geomus/submit_data.php")!) var session = nsurlsession.sharedsession() request.httpmethod = "post" var err: nserror? if let serializeddata = nsjsonserialization.datawithjsonobject(exportlist, options: nil, error: &err){ request.httpbody = serializeddata println(request.httpbody) } request.addvalue("application/json", forhttpheaderfield: "content-type") request.addvalue("application/json", forhttpheaderfield: "accept") var task = session.datataskwithrequest(request, completionhandler: {data, response, error -> void in println("response: \(response)") var strdata = nsstring(data: data, encoding: nsutf8stringencoding) println("body: \(strdata)") var err: nserror? let jsonstring = self.jsonstringify(exportlist) println(jsonstring) var json = nsjsonserialization.jsonobjectwithdata(data, options: .mutableleaves, error: &err) as! nsarray // var json = nowrappedjson! // did jsonobjectwithdata constructor return error? if so, log error console if(err != nil) { println(err!.localizeddescription) let jsonstr = nsstring(data: data, encoding: nsutf8stringencoding) println("error not parse json: '\(jsonstr)'") } else { // jsonobjectwithdata constructor didn't return error. but, should still // check , make sure json has value using optional binding. singlecode in json { if let parsejson = singlecode as? nsdictionary { // okay, parsedjson here, let's value 'success' out of var success = parsejson["code"] as? string println("succes: \(success)") } else { // woa, okay json object nil, went worng. maybe server isn't running? let jsonstr = nsstring(data: data, encoding: nsutf8stringencoding) println("error not parse json: \(jsonstr)") } } } }) task.resume() }
the code enters fatal error:
unexpectedly found nil while unwrapping optional value
var json = nsjsonserialization.jsonobjectwithdata(data, options: .mutableleaves, error: &err) as! nsarray
with error
i not sure how fix, or wrong either json format or server?