我试图删除一个标题等于或不等于从一个uicollection View单元格中选择的字符串从另一个视图控制器中选择的注释。我将字符串传递给包含mapview的视图控制器。我使用自定义注释作为注释显示方式的模型。
如何按标题选择和删除自定义注释。我已经有了一个字典数组,其中包含注释将在删除其他注释后使用的数据。我知道如何删除所有注释,但不知道如何删除标题与搜索字符串相等/不相等的注释。
为什么网络上没有任何内容或swift 3的当前功能是什么?
我已经想出了这个,但只删除了注释并显示了" filteredAnnotations"
var filteredAnnotations = self.mapview.annotations.filter {($0.title != nil) && isEqual(searchString) }
print(filteredAnnotations)
self.mapview.removeAnnotations(self.mapview.annotations)
self.mapview.addAnnotations(filteredAnnotations)
使用print语句只返回一个空数组" []"
答案 0 :(得分:3)
使用filter
获取应删除的所有注释的列表(即,其标题不是您的搜索字符串,但也不是MKUserLocation
),然后将其删除。
在Swift 3中:
let filteredAnnotations = mapView.annotations.filter { annotation in
if annotation is MKUserLocation { return false } // don't remove MKUserLocation
guard let title = annotation.title else { return false } // don't remove annotations without any title
return title != searchString // remove those whose title does not match search string
}
mapView.removeAnnotations(filteredAnnotations)
显然,将!=
更改为==
以满足您的要求或其他任何内容,但这说明了使用filter
标识一组标题与某些特定内容匹配的注释的基本概念标准。
对于Swift 2,请参阅previous revision of this answer。