ios - Can't get correct city name in swift with CLGeocoder -


i tried current city name , country name swift. here's source code. // in cllocationmanagerdelegate method can user's current location coordinates:

func locationmanager(manager: cllocationmanager, didupdatelocations locations: [cllocation]) {     let locvalue:cllocationcoordinate2d = manager.location!.coordinate     print("locations = \(locvalue.latitude) \(locvalue.longitude)")     self.locationmanager.stopupdatinglocation()     getaddressfromgeocodecoordinate(manager.location!)  }  func getaddressfromgeocodecoordinate(locationobj: cllocation) {     let geocoder = clgeocoder()     geocoder.reversegeocodelocation(locationobj, completionhandler: { (placemarks, error) -> void in          // place details         var placemark: clplacemark!         placemark = placemarks?[0]          // address dictionary         print(placemark.addressdictionary)          // city         if let city = placemark.addressdictionary!["city"] as? nsstring {             print("city:",city)         }          // country         if let country = placemark.addressdictionary!["country"] as? nsstring {             print("country", country)         }      }) } 

but when want print city returns nil. trid placemark.subadministrativearea returns nil.

i'm located in dandong city.

my code prints country well. country china city.

anybody knows solution?

check if error or what's response of getting print(placemark.addressdictionary)

geocoder.reversegeocodelocation(newlocation, completionhandler: {(stuff, error)->void in          if error {             println("reverse geodcode fail: \(error.localizeddescription)")             return         }          if stuff.count > 0 {             self.placemark = clplacemark(placemark: stuff[0] clplacemark)              self.addresslabel.text = string(format:"%@ %@\n%@ %@ %@\n%@",                 self.placemark.subthoroughfare ? self.placemark.subthoroughfare : "" ,                 self.placemark.thoroughfare ? self.placemark.thoroughfare : "",                 self.placemark.locality ? self.placemark.locality : "",                 self.placemark.postalcode ? self.placemark.postalcode : "",                 self.placemark.administrativearea ? self.placemark.administrativearea : "",                 self.placemark.country ? self.placemark.country : "")         }         else {             println("no placemarks!")             return         }          }) 

Comments

Popular posts from this blog

wireshark - USB mapping with python -

c++ - nodejs socket.io closes connection before upgrading to websocket -

Deploying Qt Application on Android is really slow? -