错误二进制运算符' =='不能应用于两个MKAnnotation'操作数

时间:2017-10-25 10:18:54

标签: ios swift mkannotation mkannotationview

我知道有许多问题与我的问题有关,但我没有任何帮助。我该如何解决这个错误?

我的代码:

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

3 个答案:

答案 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
          // ...
       }            
    }