如何根据值从Swift中的数组中删除元素?

时间:2017-03-31 06:26:16

标签: ios swift xcode

我有以下代码:

func mapView(mapView: GMSMapView, didTap marker: GMSMarker){
let lat: CLLocationDegrees = marker.position.latitude
let lng: CLLocationDegrees = marker.position.longitude
var formattedCoordinate = CLLocationCoordinate2D(latitude: lat,longitude: lng)
markersArray.remove(formattedCoordinate)
self.clean()
}

func mapView(mapView: GMSMapView, didBeginDragging marker: GMSMarker){
let lat: CLLocationDegrees = marker.position.latitude
let lng: CLLocationDegrees = marker.position.longitude
var formattedCoordinate = CLLocationCoordinate2D(latitude: lat,longitude: lng)
markersArray.remove(formattedCoordinate)
}

正如您所看到的,我正在努力去除"删除" " formattedCoordinate"来自markersArray。我看到有.filter和其他方法的选项可以删除特定索引处的元素,但在这里我想从数组中删除该特定坐标。我该怎么做?

1 个答案:

答案 0 :(得分:0)

    markers = markers.filter({ (coordinateToRemove) -> Bool in
        return coordinateToRemove.latitude == formattedCoordinate.latitude && coordinateToRemove.longitude == formattedCoordinate.longitude
    })

我有同样的问题通过舍入纬度和经度的值来解决它(因为它们可能在 formattedCoordinate 对象中的某些小数可能不同)使用

轮(coordinateToRemove.latitude)

并单独比较它们。