我刚刚更新到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]'
任何人都可以建议我应该改变这一行吗?
感谢。
答案 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
'