web-dev-qa-db-ja.com

MKAnnotationViewレイヤーは予期されたタイプではありません:MKLayer

したがって、私のコードは正常に機能しますが、私のロガーはこのメッセージでいっぱいです。それを取り除くまたは抑制する方法はありますか?

PostAnnotation.Swift

class PostAnnotation: MKPointAnnotation {

    //MARK: properties
    let post: Post

    //MARK: initialization
    init(post: Post) {
        self.post = post
        super.init()
        self.coordinate = CLLocationCoordinate2D(latitude: post.latitude, longitude: post.longitude)
        self.title = post.title
        self.subtitle = post.timeString()
    }

}

注釈の追加

let annotation = PostAnnotation(post: post)
self.map.addAnnotation(annotation)

func mapView

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {

    if annotation is MKUserLocation {
        return nil
    }

    var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "pin") as? MKPinAnnotationView
    if annotationView == nil {
        annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "pin")
    } else {
        annotationView?.annotation = annotation
    }

    if let annotation = annotation as? PostAnnotation {
        annotationView?.pinTintColor = UIColor.blue
        annotationView?.canShowCallout = true
        annotationView?.rightCalloutAccessoryView = UIButton(type: .infoLight)
        annotationView?.animatesDrop = true
    }

    return annotationView
}

この関数を削除すると、メッセージが削除されます

15
rmaes4

MKLayerはパブリッククラスではないため、これはiOS11のバグです。

メッセージは無視しますが、気になる場合は、この警告を消すために、スキームの環境ページでOS_ACTIVITY_MODE=disableを設定できます。ただし、他のOSの警告も消音することに注意してください。

Scheme Editor

17
DrMickeyLauer