2017-05-28 137 views
0

点的电话号码我已经创建了一段代码,将用于与引脚相关的电话号码搜索我的应用程序在地图上掉落:搜索并呼吁感兴趣

func doCall(_ mapView : MKMapView! , didUpdateUserLocation userLocation : MKUserLocation, placemark:MKPlacemark) 
{ 
    let request = MKLocalSearchRequest() 
    let searchBar = resultSearchController!.searchBar 
    request.naturalLanguageQuery = searchBar.text 
    let span = MKCoordinateSpan(latitudeDelta: 0.00000000001, longitudeDelta: 0.0000000001) 
    let search = MKLocalSearch(request: request) 
    search.start {MKLocalSearchResponse, error in 
     for item in (MKLocalSearchResponse?.mapItems)! as [MKMapItem] 
     { 
      let optionalString = item.phoneNumber 
      if let unwrapped = optionalString 
      { 

       let center = MKLocalSearchResponse!.mapItems.first!.placemark.coordinate 
       request.region = MKCoordinateRegion(center: center, span: span) 
       print(unwrapped) 
       let cleanUrl = unwrapped.components(separatedBy: CharacterSet.decimalDigits.inverted).joined(separator: "") 
       let url: URL = URL(string: "tel://" + (cleanUrl))! 
       UIApplication.shared.openURL(url) 
      } 


    } 
    } 
} 

然而,这段代码会返回10个电话号码,并要求拨打这10个电话号码中的每一个。我希望代码返回与该兴趣点关联的单个电话号码,并要求我给它打电话。

回答

1

考虑添加一个break语句。

if cleanUrl != nil { 
    let cleanUrl = unwrapped.components(separatedBy: CharacterSet.decimalDigits.inverted).joined(separator: "") 
    let url: URL = URL(string: "tel://" + (cleanUrl))! 
      UIApplication.shared.openURL(url) 
    break 
} 

所以,一旦电话号码。被发现,一个警报来呼吁没有。将被显示,break语句将打破循环,并且不会显示其他电话号码的提示。

+0

是的!有效!非常感谢。 –

+0

不要忘记接受答案。乐于帮助。 :) –