2016-04-10 2 views
1

Ich habe ein Anmeldeformular, das der Benutzer ausfüllt. Ich möchte, dass sie nur ihre Postleitzahl eingeben müssen und mein Programm in der Lage sein muss, auf ihre Stadt und ihren Bundesstaat zu schließen, so dass sie diese nicht manuell schreiben müssen/um eine sauberere Schnittstelle mit weniger Eingabefeldern zu haben.Swift Get City von der Postleitzahl

Wie würde ich das tun?

Antwort

3

Sie können das CoreLocation-Framework dafür verwenden. Nehmen Sie die zipcode als String und haben das Framework seine beste Vermutung nehmen oder den Benutzer mit den Vermutungen präsentieren und sie wählen:

import UIKit 
import CoreLocation 

let zipCode = "1234AB" 

let geocoder = CLGeocoder() 
geocoder.geocodeAddressString(zipCode) { 
    (placemarks, error) -> Void in 
    // Placemarks is an optional array of CLPlacemarks, first item in array is best guess of Address 

    if let placemark = placemarks?[0] { 

     print(placemark.addressDictionary) 
    } 

} 

Siehe CLGeoCoder und CLPlaceMark

+0

Und für jeden der versucht die Stadt zu bekommen: placemark.locality! für den Staat: placemark.administrativeArea! –

+0

Der Vorgang konnte nicht abgeschlossen werden. (kCLErrorDomain Fehler 8.) - Swift 3.0 – Gaganpreet

-1

Sie müssen in Ihrer App eine Referenz hinzufügen, die die Stadt mit der Postleitzahl verknüpft (fest oder in einer PLIST-Datei oder Kerndaten). Rufen Sie dann die Informationen ab und zeigen Sie sie an, wenn der Benutzer die Postleitzahl eingibt.

+1

Dies scheint ein wenig unpraktisch gegeben, wie viele zipcodes und Städte gibt es nur in den USA –

+0

Ich suchte im Internet, es scheint, es gibt "nur" etwa 43.000/44.000 Postleitzahlen. Eine CoreData oder SQLite Basis könnte diese Elemente leicht speichern – FredericP