【发布时间】:2019-05-19 11:10:48
【问题描述】:
我正在尝试使用 MVC 模式清理我的代码。我有一个文件“CoreLocationService.swift”,我想在其中获取位置。我想在“ViewController.swift”中使用该位置向用户展示。
CoreLocationService.swift
import Foundation
import CoreLocation
class CoreLocationService: CLLocationManager, CLLocationManagerDelegate {
let locationManager = CLLocationManager()
var latitude : Double?
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let GPS = locations[locations.count - 1] // Get the array of last location
latitude = GPS.coordinate.latitude
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print(error)
}
func GPSInitialize() {
// Start GPS
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
locationManager.desiredAccuracy = kCLLocationAccuracyBest
//locationManager.requestLocation() // One time request
locationManager.startUpdatingLocation() // Continues location
}
}
ViewController.swift
import UIKit
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
// let location = CLLocationManager()
let locationService = CoreLocationService() // CoreLocationService Class
override func viewDidLoad() {
super.viewDidLoad()
locationService.GPSInitialize() // Start updating Location
print(locationService.latitude) // Print Latitude
}
}
我将纬度声明为要访问的全局变量来自 ViewController.swift 但它为空且仅打印“nil”的变量。
如果我在 locationManager 中打印“打印(纬度)”,它会打印坐标。
【问题讨论】:
标签: ios swift cllocationmanager