У меня есть эта структура с именем Address, где я передал бы CLPlacemark в качестве параметра. Проблема здесь в том, что я не мог получить регион или подразделение из существующих фреймворков и классов iOS.
struct Address: Codable {
var street: String?
var city: String?
var state: String?
var zip_code: String?
var formatted_address: String?
var latitude: Double?
var longitude: Double?
var region: String?
var division: String?
init?(placemark: CLPlacemark) {
var address = ""
if let address1 = placemark.thoroughfare {
self.street = address1
address += " \(address1),"
}
if let address2 = placemark.subThoroughfare {
address += " \(address2),"
self.street = address2
}
if let city = placemark.locality {
address += " \(city),"
self.city = city
}
if let state = placemark.administrativeArea {
address += " \(state),"
self.state = state
}
if let zip = placemark.postalCode {
address += " \(zip)"
self.zip_code = zip
}
if let location = placemark.location {
let coordinates = location.coordinate
self.latitude = coordinates.latitude
self.longitude = coordinates.longitude
}
self.formatted_address = address
}
var coordinates: CLLocationCoordinate2D? {
if let latitude = self.latitude, let longitude = self.longitude {
return CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
}
return nil
}
}
Как я мог этого добиться? Я думаю, что один из способов - просто перечислить регионы и подразделения с помощью словаря с массивом состояний, и если словарь, содержащий массив, содержит состояние, то это регион / подразделение. Есть ли лучшее решение?