无法将'[AnyObject]'类型的值转换为预期的参数类型'[MKAnnotation]'错误

时间:2015-09-10 20:09:39

标签: ios swift swift2

我刚刚更新到Xcode 7并将我的代码翻译成Swift 2.0,但是我遇到了一个问题,我的代码中有一部分我无法理解。

这是代码:

    let annotationsToRemove = (self.mapView.annotations as NSArray).mutableCopy() as! NSMutableArray
    annotationsToRemove.removeObjectsInArray(objects as [AnyObject])

    self.mapView.removeAnnotations(annotationsToRemove as [AnyObject])

    let annotationsToAdd = objects.mutableCopy() as! NSMutableArray
    annotationsToAdd.removeObjectsInArray(self.mapView.annotations)

在中间线,我收到错误:

  

无法将'[AnyObject]'类型的值转换为预期的参数类型'[MKAnnotation]'

任何人都可以建议我应该改变这一行吗?

感谢。

2 个答案:

答案 0 :(得分:1)

假设objects[MKAnnotation],您可以写

let annotationsToRemove = self.mapView.annotations.filter { (annotation) -> Bool in !objects.contains { $0 === annotation} }
self.mapView.removeAnnotations(annotationsToRemove)
let annotationsToAdd = objects.filter { (object) -> Bool in !self.mapView.annotations.contains { $0 === object} }

答案 1 :(得分:0)

在Xcode 7 / Swift 2中annotations被声明为[MKAnnotation],是一个非可选的Swift Array。它使事情变得如此简单。

现在写一下

let annotationsToRemove = self.mapView.annotations
self.mapView.removeAnnotations(annotationsToRemove)

没有类型转换,没有MSMutableArray'