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

Popular posts from this blog

php - How to add and update images or image url in Volusion using Volusion API -

javascript - jQuery UI Splitter/Resizable for unlimited amount of columns -

javascript - IE9 error '$'is not defined -