我知道有许多问题与我的问题有关,但我没有任何帮助。我该如何解决这个错误?
我的代码:
var indexValue = 0
for annotationInMap in mapView.annotations {
if annotation == annotationInMap {
let centerInfo = UILabel(frame: CGRect(x: 0, y: 0, width: 150, height: 100))
centerInfo.text = allStudios[indexValue].studioAddress
centerInfo.numberOfLines = 0
centerInfo.lineBreakMode = .byWordWrapping
annotationView?.detailCalloutAccessoryView = centerInfo
}
indexValue = indexValue + 1
}
在这一行:if annotation == annotationInMap
我收到了错误Binary operator '==' cannot be applied to two 'MKAnnotation' operands
答案 0 :(得分:2)
只有符合Equatable
协议的类型才能与==
运算符进行比较。 MKAnnotation
不符合协议,这就是您收到错误的原因。
您可以使用===
身份运算符来检查这两个对象是否具有相同的引用。
答案 1 :(得分:0)
https://stackoverflow.com/a/38376877/8294374
在这里查看答案。或者你可以施展
(annotation as AnyObject).isEqual(annotationInMap)
答案 2 :(得分:0)
试试吧。您应该使用方法“isEqual”
,而不是使用二元运算符 for annotationInMap in mapView.annotations {
if annotation.isEqual(annotationInMap) {
// handled this annotation
// ...
}
}