我如何等到执行LocationService回调?

问题描述 投票:3回答:1

我尝试执行一次位置服务。从另一个对象类调用此LocationService,它将把位置信息添加到参数中。所有这些都是一个对象。

问题是,当我初始化对象时,所有内容都填充了较少的位置数据,位置数据将在几毫秒后填充。

我需要等到执行回调之后,才能成功生成完整的对象,然后再使用它

因此,考虑到下一个“ LocationService”类

public class LocationService: NSObject, CLLocationManagerDelegate{
    let manager = CLLocationManager()
    var locationCallback: ((CLLocation?) -> Void)!
    var locationServicesEnabled = false
    var didFailWithError: Error?

    public func run(callback: @escaping (CLLocation?) -> Void) {
        locationCallback = callback
        manager.delegate = self
        manager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
        manager.requestWhenInUseAuthorization()
        locationServicesEnabled = CLLocationManager.locationServicesEnabled()
        if locationServicesEnabled {
            manager.startUpdatingLocation()
        }else {
            locationCallback(nil)
        }
    }

   public func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        locationCallback(locations.last!)
        manager.stopUpdatingLocation()
    }

    public func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
        didFailWithError = error
        locationCallback(nil)
        manager.stopUpdatingLocation()
    }

    deinit {
        manager.stopUpdatingLocation()
    }
}

并且像这样从对象类中被称为[]:let getLocation = LocationService() getLocation.run { if let location = $0 { //get location parameters }}

我如何在正在调用它的类中等待,直到执行回调?我应该使用getLocation.performSelector()吗?怎么样?

我尝试执行一次位置服务。从另一个对象类调用此LocationService,它将把位置信息添加到参数中。所有这些将是一个对象。 ...
ios swift callback location performselector
1个回答
0
投票
完成后,您需要在回调内进行
© www.soinside.com 2019 - 2024. All rights reserved.