Ich verwende das CoreLocation
Framework, um den Standort des Benutzers beim Öffnen meiner App abzurufen. Ich benutze diese Funktion:Wie die Längen- und Breitengradwerte der locationManager-Funktion an anderer Stelle in meiner App in Swift verwendet werden können
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
var locValue:CLLocationCoordinate2D = manager.location!.coordinate
print("locations = \(locValue.latitude) \(locValue.longitude)")
}
des Benutzers Längen- und Breitengrad-Position zu bekommen, und ich kann sie sehen, indem sie in die Protokolle zu drucken. Das funktioniert gut.
woanders in meiner App (aber in der gleichen viewController.swift
Datei) Ich habe Code, der die OpenWeatherMap API verwendet, und ich habe eine Zeichenfolge, die die URL für diese enthält, die JSON zurückgeben.
In meinem viewDidLoad
, verwende ich:
getWeatherData("http://api.openweathermap.org/data/2.5/weather?lat=XXXXXX&lon=XXXXXX&appid=(MY-APP-ID)")
ich die lange und Lat Werte vergeben müssen, die ich in der locationManager
Funktion erworben haben, in diese Zeichenfolge, die ich weiß, dass ich von "\()"
tun können innerhalb die URL-Zeichenfolge.
Mein Problem ist, ich kann diese Werte derzeit nur innerhalb der locationManager
Funktion verwenden. Wie kann ich sie in einem Wert außerhalb dieser Funktion speichern, damit ich sie in meine URL-Zeichenfolge einfügen kann?
Danke
Das ist, was ich im Begriff war, schlagen Sie vor: Rufen Sie nicht 'getWeatherData' in' viewDidLoad', es nennen, wenn Sie, dass Daten (in '' Locationmanager ...). Wenn Sie die Daten danach woanders brauchen, warum speichern Sie sie nicht in einem var Ihrer Klasse? – Gero