objective c - Changing UserDefaultLanguage Swift problems -
i new programming , have found how change cllocation
reverse geolocation in objective c:
nsmutablearray *userdefaultlanguages = [[nsuserdefaults standarduserdefaults] objectforkey:@"applelanguages"]; [[nsuserdefaults standarduserdefaults] setobject:[nsarray arraywithobjects:@"en", nil] forkey:@"applelanguages"]; [self.geocoder reversegeocodelocation:newlocation completionhandler:^(nsarray* placemarks, nserror* error){ mkplacemark *placemarker = [placemarks objectatindex:0]; nslog(@"%@",placemarker.locality); }]; [[nsuserdefaults standarduserdefaults] setobject:userdefaultlanguages forkey:@"applelanguages"];
and have big difficulties translate in swift, managed do:
let userdeflang = userdefaults.standard.array(forkey: "applelanguages") var placemark: clplacemark! placemark = placemarks?[0] if let city = placemark.addressdictionary!["state"] as? string { self.city = city string } else { self.city = "connection" } if let country = placemark.addressdictionary!["country"] as? string { self.country = country string } else { self.country = "failed" } self.currentcity.name = ("\(self.city), \(self.country)" string)
but dunno how set language , change back, please me... things can not make are:
[[nsuserdefaults standarduserdefaults] setobject:[nsarray arraywithobjects:@"en", nil] forkey:@"applelanguages"];
and
[[nsuserdefaults standarduserdefaults] setobject:userdefaultlanguages forkey:@"applelanguages"];
update
i have made changes told (i wish understood how) code:
func convertlocationtocity() { if let defaultlanguage = userdefaults.standard.array(forkey: "applelanguages") as? [string] { let newlang = ["en"] userdefaults.standard.set(newlang, forkey: "applelanguages") let geocoder = clgeocoder() let userlocation = cllocation(latitude: self.lat, longitude: self.long) geocoder.reversegeocodelocation(userlocation, completionhandler: { (placemarks, error) -> void in var placemark: clplacemark! placemark = placemarks?[0] var cityref = "" var countryref = "" if let city = placemark.addressdictionary!["state"] as? string { cityref = city string } else { cityref = "" } if let country = placemark.addressdictionary!["country"] as? string { countryref = country string } else { countryref = "" } self.currentcity = ("\(cityref), \(countryref)" string) if (self.didloadcity == "" || self.didloadcity == self.currentcity) { self.didloadcity = ("\(cityref), \(countryref)" string) } print("\(self.currentcity)") self.citynamelabel.text = self.currentcity }) //after set again defaultlanguage. userdefaults.standard.set(defaultlanguage, forkey: "applelanguages") } }
but still no changes, shows me response in phone's default language.
for can use array(forkey:)
, set(_:forkey:)
on userdefaults
object this.
if let defaultlanguage = userdefaults.standard.array(forkey: "applelanguages") as? [string] { let newlang = ["en"] userdefaults.standard.set(newlang, forkey: "applelanguages") //perform task here //after set again defaultlanguage. userdefaults.standard.set(defaultlanguage, forkey: "applelanguages") }
Comments
Post a Comment