No se puede subcribir un valor de tipo con un tipo de índice int

Me gustaría recuperar la location actual. Trabajo con swift Xcode 7. Miré tutoriales de PLUSIEUR, pero cada vez usan el mismo método. Aquí está mi código y mi error:!

Error: no se puede subcribir un valor de tipo [CLPlacemark] con un tipo de índice int

import UIKit import CoreLocation class ViewController: UIViewController, CLLocationManagerDelegate { let LocationManager = CLLocationManager() override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. self.LocationManager.delegate = self self.LocationManager.desinetworkingAccuracy = kCLLocationAccuracyBest self.LocationManager.requestWhenInUseAuthorization() self.LocationManager.startUpdatingLocation() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func locationManager(manager: CLLocationManager, didUpdateLocations locations: [AnyObject]) { CLGeocoder().reverseGeocodeLocation(manager.location!, completionHandler: { (placemarks, error) -> Void in if (error != nil) { print("Error") return } if placemarks!.count > 0 { let pm = placemarks[0] as CLPlacemark self.displayLocationInfo(pm) } else { print("errorData") } }) } func displayLocationInfo(placemark: CLPlacemark){ self.LocationManager.stopUpdatingLocation() print(placemark.locality) print(placemark.postalCode) print(placemark.administrativeArea) print(placemark.country) } func locationManager(manager: CLLocationManager, didFailWithError error: NSError) { print("Error:" + error.localizedDescription) } } 

No, en Xcode 7 el error es:

error: no se puede subcribir un valor de tipo '[CLPlacemark]?' con un índice de tipo 'Int'

¿Nota de la ? . Tienes que desenvolver esa opción. Entonces puedes replace:

 if placemarks!.count > 0 { let placemark = placemarks[0] as CLPlacemark self.displayLocationInfo(placemark) } 

con:

 if let placemark = placemarks?.first { self.displayLocationInfo(placemark) } 

También encontré este problema en una situación casi idéntica. Una vez más, el consejo es que piensa que no está desempaquetado, ¡así que poniendo un! En eso funcionó para mí.

Prueba esto.

 let pm = placemarks![0] as CLPlacemark 
  if placemarks!.count > 0 { var pm:CLPlacemark! pm = placemarks![0] as CLPlacemark //let pm:CLPlacemark = placemarks. self.displayLocationInfo(pm) let locality = (pm.locality != nil) ? pm.locality : "" let sublocality = (pm.subLocality != nil) ? pm.subLocality : "" let thoroughfare = (pm.thoroughfare != nil) ? pm.thoroughfare : "" let country = (pm.country != nil) ? pm.country : "" let administrativeArea = (pm.administrativeArea != nil) ? pm.administrativeArea : "" print(pm.subLocality) var annotation = MKPointAnnotation() annotation.coordinate = coordinate annotation.title = "\(thoroughfare) \(sublocality), \(locality)" annotation.subtitle = "\(administrativeArea), \(country)"; self.mapViewForVisitLocation.addAnnotation(annotation) } 

Funciona para mí en X-Code 7 y Swift 2.0.