J'essaie de définir une variable/constante dans Swift en utilisant une valeur provenant d'une fonction qui trouve l'emplacement actuel de l'utilisateur alors que l'application est ouverte. Lorsque je décommente la fonction d'impression, elle imprime avec succès les coordonnées, mais je ne peux pas accéder à la valeur en dehors de la fonction.Impossible d'obtenir les coordonnées de CLLocationManager dans une variable/constante séparée
J'ai actuellement cela comme une partie de mon code qui est dans le fichier MainVC.swift dans le cadre de la classe MainVC:
import UIKit
import MapKit
import CoreLocation
class MainVC: UIViewController, CLLocationManagerDelegate {
//Map
@IBOutlet weak var map: MKMapView!
let manager = CLLocationManager()
let coordinates = locationManager()
//I've also tried using let coordinates = currentCoords
override func viewDidLoad() {
super.viewDidLoad()
manager.delegate = self
manager.desiredAccuracy = kCLLocationAccuracyBest
manager.requestWhenInUseAuthorization()
manager.startUpdatingLocation()
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) -> String {
let location = locations[0]
let span:MKCoordinateSpan = MKCoordinateSpanMake(0.01, 0.01)
let myLocation:CLLocationCoordinate2D = CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude)
let region:MKCoordinateRegion = MKCoordinateRegionMake(myLocation, span)
map.setRegion(region, animated: true)
lat = String(myLocation.latitude)
long = String(myLocation.longitude)
let currentCoords:String = "\(lat);\(long)"
//print(currentCoords)
self.map.showsUserLocation = true
return currentCoords
}
}
Cependant, je suis confronté à cette erreur:
"Cannot use instance member 'locationManager' within property initializer; property initializers run before 'self' is available".
Quand je change le code et utiliser
let coordinates = currentCoords
je reçois une autre montrant erreur:
"Use of unresolved identifier 'currentCoords'"
J'ai aussi essayé d'utiliser un var paresseux et let paresseux.
Vous devez fournir un peu plus de contexte pour le code que vous avez publié. – rmaddy
Votre erreur ne provient-elle pas de votre initialiseur? collez le code à partir de votre ** initialiseur ** où vous obtenez l'erreur. – Honey
@rmaddy désolé à ce sujet, j'ai oublié de l'ajouter lors de la publication initiale, mis à jour le poste principal avec un peu de contexte, espérons que cela aide. – Miles