usage - Swift 2 CLLocationManager Error al actualizar
startupdatinglocation swift (5)
Acabo de tener el mismo problema que tú, cambiar.
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [AnyObject])
a
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
Actualicé Xcode 6 a Xcode 7 beta con Swift 2. Recibo este error y no puedo descubrir cómo solucionarlo, por favor, ayúdeme. Gracias. Este es mi código:
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [AnyObject]) {
let location = locations.last as! CLLocation
let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)
let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01))
self.map.setRegion(region, animated: true)
}
y me sale este error:
Objective-C method ''locationManager:didUpdateLocations:'' provided by method ''locationManager(_:didUpdateLocations:)'' conflicts with optional requirement method ''locationManager(_:didUpdateLocations:)'' in protocol ''CLLocationManagerDelegate''
Haga clic en su proyecto: vaya a Crear fases-> Vincular binarios con bibliotecas y agregue CoreLocation.framework
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
let locationManager = CLLocationManager()
var LatitudeGPS = NSString()
var LongitudeGPS = NSString()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
updateLocation()
func updateLocation() {
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
//self.locationManager.distanceFilter = 10
self.locationManager.requestWhenInUseAuthorization()
self.locationManager.startUpdatingLocation()
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [AnyObject]) {
locationManager.stopUpdatingLocation() // Stop Location Manager - keep here to run just once
LatitudeGPS = String(format: "%.6f", manager.location!.coordinate.latitude)
LongitudeGPS = String(format: "%.6f", manager.location!.coordinate.longitude)
print("Latitude - /(LatitudeGPS)")
}
Este es mi código que funciona en xcode 7, también tuve que limpiar mi código (Producto-> Limpiar)
Resolví esto mediante el siguiente código:
//CLLocationManagerDelegate
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [AnyObject]) {
let location:CLLocation = locations[locations.count-1] as! CLLocation
if (location.horizontalAccuracy > 0) {
self.locationManager.stopUpdatingLocation()
print(location.coordinate, terminator: "")
updateWeatherInfo(location.coordinate.latitude, longitude: location.coordinate.longitude)
}
}
@objc
marcar su clase o método con el atributo @objc
. Entonces, o bien:
@objc class MyManagerDelegate: NSObject, CLLocationManagerDelegate {
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [AnyObject]) {
...
}
}
O:
class MyManagerDelegate: CLLocationManagerDelegate {
@objc func locationManager(manager: CLLocationManager, didUpdateLocations locations: [AnyObject]) {
...
}
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations.last as! CLLocation!
manager.stopUpdatingLocation()
let region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude), span: MKCoordinateSpan(latitudeDelta: 0.001, longitudeDelta: 0.001))
mapView.setRegion(region, animated: true)
}