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