Swift 延迟添加批注,直到搜索完成

Swift 延迟添加批注,直到搜索完成,swift,dictionary,annotations,mkmapviewdelegate,mklocalsearch,Swift,Dictionary,Annotations,Mkmapviewdelegate,Mklocalsearch,因此,我搜索并找到了多篇关于创建独特注释和管脚的文章,但我认为我遗漏了一些更基本的内容,可能是使用MKMapViewDelegate下的annotationView函数 首先,我对Swift编程非常陌生,所以如果这是显而易见的事情,请提前道歉。本质上,我有一个mapView,它通过放大动画找到用户的位置。然后我有一个按钮,它将按钮标题传递给MKLocalSearch,还有一个for/in循环,用于创建注释并将它们添加到地图视图中。问题是第一次单击我的按钮时没有添加批注,我必须再次单击才能显示批注

因此,我搜索并找到了多篇关于创建独特注释和管脚的文章,但我认为我遗漏了一些更基本的内容,可能是使用MKMapViewDelegate下的annotationView函数

首先,我对Swift编程非常陌生,所以如果这是显而易见的事情,请提前道歉。本质上,我有一个mapView,它通过放大动画找到用户的位置。然后我有一个按钮,它将按钮标题传递给MKLocalSearch,还有一个for/in循环,用于创建注释并将它们添加到地图视图中。问题是第一次单击我的按钮时没有添加批注,我必须再次单击才能显示批注

我尝试过DispatchQueue.main.async,并试图在该循环上设置一个执行延迟,以允许响应完成处理,下面是viewController顶部的相关部分(我只包含了相关代码,我的CLLocationManagerDelegate有一个扩展,如前所述运行良好):

我明白了

localSearch=MKLocalSearch(请求:request)位于区域上方,搜索条件语句我的代码是:

localSearch = MKLocalSearch(request: request)
request.naturalLanguageQuery = place
request.region = mapView.region
正确的代码是:

request.naturalLanguageQuery = place
request.region = mapView.region
localSearch = MKLocalSearch(request: request)
request.naturalLanguageQuery = place
request.region = mapView.region
localSearch = MKLocalSearch(request: request)