* ОБНОВЛЕНИЕ: Теперь получение данных о местоположении, и оператор печати print("\(currentLocation.coordinate.latitude)")
работает.Если я пытаюсь присвоить то, что находится справа от символа = значению label.text, я получаю сообщение об ошибке: неожиданно обнаружен ноль при развертывании необязательного значения.* Все еще новичок во всей этой вещи Swift / Xcode.Любая помощь будет принята с благодарностью.Я запускаю следующий код (только код, относящийся к указанной проблеме).Когда пользователь нажимает кнопку и выбирает получить местоположение, он должен получить свое местоположение.Вместо этого я ничего не получаю.Текст в locationManager никогда не печатается, и я в растерянности.
import UIKit
import MapKit
import CoreLocation
import MessageUI
import Photos
import AVFoundation
class ViewController: UIViewController, UITextViewDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate, CLLocationManagerDelegate, MFMailComposeViewControllerDelegate {
var locationManager: CLLocationManager()
var currentLocation: CLLocation?
override func viewDidLoad() {
super.viewDidLoad()
locationManager.requestWhenInUseAuthorization()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.startUpdatingLocation()
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let currentLocation = locations[0]
print("\(currentLocation.coordinate.latitude)")
issueLocation.text = "\(currentLocation.coordinate.latitude)" ***ERROR***
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print("Error: \(error)")
}
Вещи, которые не имеют значения, я надеюсь, и больше кода
// Attach a location
@IBAction func attachLocation(_ sender: UIButton) {
if issueLocation.text == nil {
issueImage.isHidden = true
}
let alertController = UIAlertController(title: "Location options", message: nil, preferredStyle: .actionSheet)
// Get location
let locationAction = UIAlertAction(title: "Get location", style: .default) { (action) in
self.displayLocation()
}
// Add get location action to alert controller
alertController.addAction(locationAction)
// Remove location
let eraseLocation = UIAlertAction(title: "Erase location", style: .default) { (action) in
self.issueLocation.text == nil
self.issueLocation.isHidden = true
}
// Add erase location to alert controller
alertController.addAction(eraseLocation)
// Cancel action
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (action) in
// Do nothing
}
// Add cancel action to alert controller
alertController.addAction(cancelAction)
// Display alert message on screen
self.present(alertController, animated: true) {
// Code to handle user selection
}
}
func displayLocation() {
let status = CLLocationManager.authorizationStatus()
let noPermissionMessage = "It appears that LoCAL Information does not have access to your location. Click Settings -> LoCAL Information -> Location to allow access to your location."
switch status {
case .notDetermined:
locationManager?.requestWhenInUseAuthorization()
case .authorized, .authorizedAlways, .authorizedWhenInUse:
print("JJJJJ")
print("KKKKK")
issueLocation.isHidden = false
case .denied, .restricted:
self.troubleAlert(message: noPermissionMessage)
@unknown default:
self.troubleAlert(message: noPermissionMessage)
}
}