Имам малък проблем с CLLocationManager. Когато щракна върху IBAction "addPlace", приложението се срива. Не виждам проблема и не разбирам защо приложението се срива.
Благодаря ви предварително за отговора.
class Map: UIViewController, CLLocationManagerDelegate {
// Outlets
@IBOutlet weak var mapView: MKMapView!
@IBOutlet weak var BTNAdd: UIButton!
// Variables
var positionManager = CLLocationManager()
var geoCoder : CLGeocoder!
var placemark : CLPlacemark!
var name: String = ""
var address: String = ""
var longitude: String = ""
var latitude: String = ""
// Actions
@IBAction func myPosition(sender: AnyObject) {
positionManager.delegate = self
positionManager.desiredAccuracy = kCLLocationAccuracyBest
positionManager.requestWhenInUseAuthorization()
positionManager.startUpdatingLocation()
mapView.showsUserLocation = true
}
@IBAction func addPlace(sender: AnyObject) {
///////////////////////////////////////
// BUG HERE
///////////////////////////////////////
let locality = String(self.placemark.locality)
let postalCode = String(self.placemark.postalCode)
let administrativeArea = String(self.placemark.administrativeArea)
let country = String(self.placemark.country)
print(locality + postalCode + administrativeArea + country)
///////////////////////////////////////
///////////////////////////////////////
}
// Functions
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
CLGeocoder().reverseGeocodeLocation(manager.location!, completionHandler: {(placemarks, error)->Void in
if let pm = placemarks?.first {
self.displayLocationInfo(pm)
}
})
}
func displayLocationInfo(placemark: CLPlacemark?) {
if let containsPlacemark = placemark {
positionManager.stopUpdatingLocation()
let locality = (containsPlacemark.locality != nil) ? containsPlacemark.locality : ""
let postalCode = (containsPlacemark.postalCode != nil) ? containsPlacemark.postalCode : ""
let administrativeArea = (containsPlacemark.administrativeArea != nil) ? containsPlacemark.administrativeArea : ""
let country = (containsPlacemark.country != nil) ? containsPlacemark.country : ""
}
}
}