i have response socket io library response this
socket.on("response-names") {data, ack in print(data) }
can print this,
[{ "person": [{ "_id":"56512323212132", "name":"john smith", "id":"0000001", "geolocation":{ "latitude":5.12312323443, "longitude":101.12312464564354 } }] }]
how guys access name, id , geolocation(lat, long) in swift ?,
as far know data nsarray. accessing data[0] produce nil. can data.count return 1.
thank you
finally solved it, future reference others. looks need know type before parsing it. , check print. , debug code helping, nscfarray means data nsarray , try read that.
let dataarray = data nsarray let datastring = dataarray[0] as! string let datanewnow = datastring.datausingencoding(nsutf8stringencoding, allowlossyconversion: false)! { let json = try nsjsonserialization.jsonobjectwithdata(datanewnow, options: []) as! [string: anyobject] let str = json["person"] as! nsarray let str2 = str[0] as! nsdictionary let personname = str2["name"] as! string let personid = str2["id"] as! string let persongeolocation = str2["geolocation"] as! nsdictionary let personlatitude = persongeolocation["latitude"] as! nsnumber let personlongitude = persongeolocation["longitude"] as! nsnumber print("personname =", personname) print("personid =", personid) print("person latitude =", personlatitude) print("person longitude =", personlongitude) } catch let error nserror { print("failed load: \(error.localizeddescription)") }
Comments
Post a Comment