when usage tutorial startupdatinglocation manager example description current cllocationmanagerdelegate cllocationmanager swift2 xcode7 xcode7-beta2

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) }