gpt4 book ai didi

ios - 如何在 Swift 中的闭包/ block 中设置属性

转载 作者:搜寻专家 更新时间:2023-10-31 23:02:11 24 4
gpt4 key购买 nike

目前我的 View Controller 中有两个字段/属性。我们正在使用 calculateDirectionsWithCompletionHandler 并尝试将我的字段设置为 route.distanceroute.expectedTravelTime 的值。这是相关代码:

func calculateDistanceAndEta(locationCoordinate: CLLocationCoordinate2D) {
let currentLocMapItem = MKMapItem.mapItemForCurrentLocation();
let selectedPlacemark = MKPlacemark(coordinate: locationCoordinate, addressDictionary: nil);
let selectedMapItem = MKMapItem(placemark: selectedPlacemark);
let mapItems = [currentLocMapItem, selectedMapItem];
let request: MKDirectionsRequest = MKDirectionsRequest()
request.transportType = MKDirectionsTransportType.Walking;
request.setSource(currentLocMapItem)
request.setDestination(selectedMapItem);
var directions: MKDirections = MKDirections(request: request);
var distsanceLabelTest = ""
var etaLabelTest = ""
directions.calculateDirectionsWithCompletionHandler { (response, error) -> Void in
if (error == nil) {
if (response.routes.count > 0) {
var route: MKRoute = response.routes[0] as! MKRoute;
// route.distance = distance
// route.expectedTravelTime = eta
println("\(route.distance)")
distsanceLabelTest = "\(route.distance)"
etaLabelTest = "\(route.expectedTravelTime)"
}
} else {
println(error)
}
}
println(distsanceLabelTest)
println(etaLabelTest)
self.distanceLabelString = distsanceLabelTest
self.etaLabelString = etaLabelTest

}

但是,我们似乎无法设置任何变量,因为它只返回 nil。我们如何将类字段设置为 route.distanceroute.expectedTravelTime 的值。

最佳答案

we can't seem to set any of the variables as it just returns nil.

提供完成 block 的要点是 calculateDirectionsWithCompletionHandler 异步运行并在准备就绪时执行完成例程。因此,您的 distanceexpectedTravelTime 属性确实会在 calculateDistanceAndEta 返回后立即保持不变,因为由 calculateDirectionsWithCompletionHandler 启动的进程可能不会到那时已经完成了。您的完成 block 将在完成时运行。如果您需要在设置属性时采取一些操作,请将该代码放入您的完成 block 中。

关于ios - 如何在 Swift 中的闭包/ block 中设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32419192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com