2017-12-27 7 views
0

내 프로젝트 사용자는 현재 특정 도시에 있지 않는 한 다음보기로 이동할 수 없습니다.영어로 된 사용자 도시 가져 오기

fetchCountryAndCity(location: location) { country, city in 
       print("country:", country) 
       print("city:", city) 
       if city == "Riyadh" || city == "الرياض" || city == "리야드" || city == "Riyah" { 

문제가 I가 이름을 확인할 수있다 : 그래서 여기에 사용자가 내가 좌표를 가지고 확인 내 현재 위치를 얻을 클릭하면 내가

func fetchCountryAndCity(location: CLLocation, completion: @escaping (String, String) ->()) { 
    CLGeocoder().reverseGeocodeLocation(location) { placemarks, error in 
    if let error = error { 
     print(error) 
    } else if let country = placemarks?.first?.country, 
     let city = placemarks?.first?.locality { 
      completion(country, city) 
     } 
    } 
} 

다음 좌표의 도시를 확인하는 방법입니다 도시 이름의 출력은 장치의 언어에 따라 다르기 때문에 (테스트 중 발견 한대로) 올바르지 않습니다. 모든 언어로 된 도시의 이름을 확인하는 다른 방법이 있습니까?

+1

위치 정보를 사용하십시오. –

+0

당신은 내게 더 많은 세부 사항을 줄 수 있습니다 :) – leo0019

+0

이 게시물은 도움이 될 수도 있습니다 : https://stackoverflow.com/questions/25144508/reverse-geocoding-to-return-results-only-in-english – Ghean

답변

1

NSLocalizedString을 사용하면 리야드의 이름을 사용자 언어로 지정할 수 있습니다. 이것은 당신이 언어의 전체 무리에 리야드라는 이름을 입력 번역 번역이 필요합니다. Wikipedia는 전문 번역가가 필요없이 손을 빌려줄 수 있습니다.

다른 접근법은 도시 내에 있다는 것을 알고있는 장소 표시를 얻은 다음 해당 palcemark의 도시를 사용자가 입력 한 것과 비교하는 것입니다. 이 방법은 두 도시의 이름은 사용자의 언어에 있습니다

var riyadh: (country: String, city: String)? 

override func viewDidLoad() { 
    // Riyadh's city hall 
    fetchCountryAndCity(location: CLLocation(latitude: 24.686212, longitude: 46.712462)) { country, city in 
     self.riyadh = (country, city) 
    } 
} 

당신은 사용자의 입력에서 얻은 장소를 확인하는 경우 :

fetchCountryAndCity(location: CLLocation(latitude: 24.647212, longitude: 46.710844)) { country, city in 
    if let riyadh = self.riyadh, riyadh == (country, city) { 
     print("Hey it's Riyadh. Name in user locale is \(city)") 
    } 
} 

이 방법의 성가심은 당신이 필요로하는 경우 초기화되지 않을 수 있습니다 riyadh입니다 뷰 컨트롤러의 수명주기에서 매우 초기 단계입니다.

+0

감사합니다. 당신의 대답을 위해. 차라리 'NSLocalizedString'으로 첫 번째 접근 방식을 선택 하겠지만 그 점에 대해 도움이 필요합니다. 어떤 자료를 알고 있습니까? – leo0019

관련 문제