2015-09-08 19 views
6

私はスウィフト2に地図上のポリラインを描画しようとしていますそれはすべてがうまく動作しますが、私はこのコードのコンパイラ警告が表示されます:スウィフト2 MKMapViewDelegate rendererForOverlayコンパイラの警告

func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! { 

    if overlay is MKPolyline { 

     let polylineRenderer = MKPolylineRenderer(overlay: overlay) 

     polylineRenderer.strokeColor = UIColor.redColor() 

     polylineRenderer.lineWidth = 5 

     return polylineRenderer 
    } 

    return nil 

} 

これが私に与えます警告は今、これは罰金コンパイルします

結果とのMapView(rendererForOverlay)のパラメータは、プロトコルMKMapViewDelegateにより予想とは異なる選択性を持っている」と言うが、それバグ私は、コンパイラの警告が表示されていること。私は削除することによって!

func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer { 

への最初の行を変更した場合

、警告は消えますが、私はリターンがゼロにはできませんし、コードはもうコンパイルできないというエラーが発生します。

これも同じ問題が述べられた。このスレッドにフォローされているにもかかわらず、満足な答えが利用できない: Swift 2 MKMapViewDelegate rendererForOverlay optionality

誰もがスウィフト2になりました。この機能を使用する正しい方法上の任意の光を当てることができますか?

ありがとうございました。

func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer 

を、明らか普段あなたがnilを返すreturn MKPolylineRenderer()を返すため除いて、それについてできることは何もありません:オートコンプリートは、試作品を示唆するもので行く

答えて

17

は次のようになります。地図上の指定されたオーバーレイを提示するとき

レンダラを使用する:ここでは、ドキュメントが返されたオブジェクトについて言っていることだから

は、私にとってそれは、実装のバグのように見えます。 nilを返すと、指定されたオーバーレイオブジェクトに対してコンテンツが描画されません。

私はあなたがnilを返さないApple's bug report

+1

ありがとうございます。これにより、コードが正常に動作し、警告が取り除かれます。 –

+0

リターンnilは私にエラーを与えます。だから私を助けて –

5

にそれのためのケースを作成することをおすすめします。これは作成するオーバーレイに対してのみ呼び出されるため、オーバーレイがMKPolylineかどうかを確認する代わりに、オーバーレイがどれかを確認します。 1つしかない場合は、指定されたポリラインレンダラーを返すことなく、指定したポリラインレンダラーを返します。

関連する問題