arrays - Swift: check if jsonObjectWithData is json or not -
i have swift application communicates http server,
the answers server may json, or not. need check print answer dictionary
or array
, in order avoid fatal error: unexpectedly found nil while unwrapping optional value
@ nsjsonserialization.jsonobjectwithdata(dataval, options: nsjsonreadingoptions.mutablecontainers, error: nil) as! nsdictionary
this jsonobjectwithdata
:
var dataval: nsdata = nsurlconnection.sendsynchronousrequest(request, returningresponse: &response, error:nil)! elimresponse = response?.description elim = nsjsonserialization.jsonobjectwithdata(dataval, options: nsjsonreadingoptions.mutablecontainers, error: nil) as! nsdictionary
what try like:
if dataval json{ elim = nsjsonserialization.jsonobjectwithdata(dataval, options: nsjsonreadingoptions.mutablecontainers, error: nil) as! nsdictionary println(elimjson) }else{ elim = nsjsonserialization.jsonobjectwithdata(dataval, options: nsjsonreadingoptions.mutablecontainers, error: nil) as! nsarray println(elim) }
thank help. regards.
you can try casts in if let
this:
if let elim = nsjsonserialization.jsonobjectwithdata(dataval, options: nil, error: nil) as? nsdictionary { println("elim dictionary") println(elim) } else if let elim = nsjsonserialization.jsonobjectwithdata(dataval, options: nil, error: nil) as? nsarray { println("elim array") println(elim) } else { println("dataval not valid json data") }
update swift 2.0
do { if let elim = try nsjsonserialization.jsonobjectwithdata(dataval, options: []) as? nsdictionary { print("elim dictionary") print(elim) } else if let elim = try nsjsonserialization.jsonobjectwithdata(dataval, options: []) as? nsarray { print("elim array") print(elim) } else { print("dataval not valid json data") } } catch let error nserror { print(error) }
Comments
Post a Comment