ios swift swift2 ios9 clplacemark

ios - no puedo encontrar la manera de insertar correctamente mi ubicación actual en el cuerpo del mensaje con CLPlacemark



swift swift2 (1)

Simplemente al crear CLPlacemark no obtendrá la ubicación para usted. Deberá crear el objeto de CLLocationManager y luego actualizar su ubicación actual utilizando el método startUpdatingLocation del objeto CLLocationManager. También deberá implementar métodos delegados para recibir la ubicación actual de esta manera.

import UIKit import CoreLocation class Location: UIViewController, CLLocationManagerDelegate { let locationManager = CLLocationManager() var currentLocation : CLPlacemark? var locationManager = CLLocationManager() private override init() { super.init() locationManager.delegate = self } func updateLocation() { locationManager.startUpdatingLocation() } func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { locationManager.stopUpdatingLocation() let location : CLLocation = locations.last as CLLocation! //use reverse geocoding to get the address from location coordinates you got } }

Una vez que obtenga las coordenadas de ubicación, puede hacer una geocodificación inversa para obtener la marca de lugar o la dirección exacta. Consulte Ubicación de geocodificación inversa en Swift para geocodificación inversa. En cuanto al error que está recibiendo, puede verificar si el objeto de marca de posición es nulo antes de crear un mensaje.

Hace unos días, apenas intenté insertar mi ubicación actual en el cuerpo del mensaje en mi iPhone, pero fallé.

Intenté todo lo que tenía en mente, pero solo obtuve errores

El último error que obtuve es

"error fatal: encontrado inesperadamente nulo mientras desenvuelve un valor opcional"

CLPlacemark un objeto de CLPlacemark y lo hice opcional, lo que significa que podría tener valor o podría no tener valor.

¿Hay alguna manera de crear un mensaje con mi ubicación actual?

Archivo MainMenu

import UIKit import Social import MessageUI import Foundation import CoreLocation class MainMenu: UIViewController , MFMessageComposeViewControllerDelegate , UINavigationControllerDelegate , MFMailComposeViewControllerDelegate, CLLocationManagerDelegate { let locationManager = CLLocationManager() func messageComposeViewController(controller: MFMessageComposeViewController, didFinishWithResult result: MessageComposeResult) { } let placeMarks = Location() @IBAction func TapOnEmergency(sender: UIButton) { let textMessageRecipients = ["+123456789"] let messageComposer = MFMessageComposeViewController() let Emergency = UIAlertController(title: "Do You Need Help ?", message: nil, preferredStyle: UIAlertControllerStyle.ActionSheet) let Yes = UIAlertAction(title: "YES", style: .Default) { (action) in if (MFMessageComposeViewController.canSendText()) { messageComposer.messageComposeDelegate = self messageComposer.recipients = textMessageRecipients messageComposer.body = "I''m Lost, I need some Help, Here''s my Location /(self.placeMarks.currentLocation!.country)" self.navigationController?.presentViewController(messageComposer, animated: true){} self.presentViewController(messageComposer, animated: true, completion: nil) self.messageComposeViewController(messageComposer, didFinishWithResult: MessageComposeResultCancelled) } else { let errorAlert = UIAlertController(title: "Cannot Send Text Message", message: "Your device is not able to send text messages.", preferredStyle: UIAlertControllerStyle.Alert) errorAlert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Cancel, handler: nil)) self.presentViewController(errorAlert, animated: true, completion: nil) } let Options = UIAlertController(title: "Do You Want to Call Your Supervisor ?", message: nil, preferredStyle: UIAlertControllerStyle.ActionSheet) let dialNumber = UIAlertAction(title: "YES", style: .Default) { (action) in let call:NSURL = NSURL(string: "tel://123456789")! UIApplication.sharedApplication().openURL(call) } Options.addAction(dialNumber) let Dismiss = UIAlertAction(title: "Dismiss", style: .Destructive) { (action) in } Options.addAction(Dismiss) self.presentViewController(Options, animated: true) {} } Emergency.addAction(Yes) let No = UIAlertAction(title: "Dismiss", style: .Destructive) { (action) in } Emergency.addAction(No) self.presentViewController(Emergency, animated: true) {} } }

Archivo de ubicación

import UIKit import CoreLocation class Location: UIViewController, CLLocationManagerDelegate { let locationManager = CLLocationManager() var currentLocation : CLPlacemark? }