Ich versuche, den aktuellen Standort des Benutzers mit Swift zu ermitteln. Hier ist, was ich bin derzeit mit:Ermitteln des aktuellen Standorts des Benutzers, aber Rückkehr "Optional" California .. usw.
import UIKit
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
let locationManager = CLLocationManager();
//Info about user
@IBOutlet weak var userTF: UITextField!
@IBOutlet weak var BarbCustTF: UITextField!
override func viewDidLoad()
{
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.requestWhenInUseAuthorization();
self.locationManager.startUpdatingLocation();
}
override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// GPS STUFF
// UPDATE LOCATION
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
CLGeocoder().reverseGeocodeLocation(manager.location!) { (placemarks, ErrorType) -> Void in
if(ErrorType != nil)
{
print("Error: " + ErrorType!.localizedDescription);
return;
}
if(placemarks?.count > 0)
{
let pm = placemarks![0] ;
self.displayLocationInfo(pm);
}
}
}
// STOP UPDATING LOCATION
func displayLocationInfo(placemark: CLPlacemark)
{
self.locationManager.stopUpdatingLocation();
print(placemark.locality);
print(placemark.postalCode);
print(placemark.administrativeArea);
print(placemark.country);
}
// PRINT OUT ANY ERROR WITH LOCATION MANAGER
func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {
print("Error: " + error.localizedDescription);
}
Alles gut zu funktionieren scheint, aber die Ausgabe Ich ist immer wie wirklich seltsam und sagt Optional vor ihm, und ist auf jeden Fall (leider) nicht mein aktueller Standort .
Dies ist die Ausgabe erhalte ich, wenn ich es an die Konsole drucken
Optional ("Cupertino")
Optional ("95014")
Optional ("CA")
Optional ("Vereinigte Staaten")
Dinge, die ich habe versucht: 1) In meinem info.plist ich habe: NSLocationWhenInUseUsageDescription
2) Ich habe auch gehört, seltsame Dinge passiert, und ich versuchte, gehen Debug >> Lage >> und ändert es in der Stadt und alle möglichen Dinge (hat nicht geholfen)
Ich denke, dass das Problem etwas in meiner Funktion LocationManager
ist, die mit wie "Verpackung" oder etwas zu tun hat? Ich bin mir nicht sicher, das ist mein erster Tag, an dem ich mit iOS-Programmierung mit Swift herumhantiert bin und ich weiß nicht wirklich, was das ist, aber ich glaube, das könnte das sein, was ich im Internet gesehen habe ... Im Grunde genommen versteh nicht, warum ich einige Standard-Apple-Standorte drucke (Kalifornien .. bla bla) Ich lebe nicht in Cali (leider).
Das 'Optional (...)' ist, weil Sie ein 'Optional' drucken, das einen' String' einschließt. Sie müssen das optionale Element auspacken, um den zugrunde liegenden Typ mit 'if let' oder'! 'Zu erhalten. – paulvs
Paul, wie mache ich das? –
Laufen Sie das auf dem Simulator? Wenn ja, würde ich versuchen, Ihre App auf einem physischen Gerät auszuführen und zu überprüfen, ob Sie die richtige Ausgabe erhalten. – tfrank377