2015-06-10 9 views
6

Swift 1.2 ben var bu:Swift 2 MKMapViewDelegate rendererForOverlay optionality

class UVC: NSViewController, MKMapViewDelegate { 
    // ... 

    // ************************************** 
    // MARK: MapView Delegate 
    // ************************************** 
    func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer! { 
     if overlay is OSGBTiles { 
      return OSGBTilesRenderer(tileOverlay: overlay as! OSGBTiles) 
     } else if overlay is ESRI { 
      return ESRIRenderer(shapeFileOverlay: overlay as! ESRI) 
     } else if overlay is MKTileOverlay { 
      return MKTileOverlayRenderer(overlay: overlay) 
     } else { 
      print("Unknown overlay") 
     } 
     return nil 
    } 
} 
Swift 2 mapView:rendererForOverlay tanımı artık MKOverlayRenderer! yerine MKOverlayRenderer dönmek için değişti ve şimdi (şaşırtıcı olmayan) bana nil dönmesine izin vermez

MKOverlayRenderer, NilLiteralConvertible değil. Ancak, (Xcode 7'de) belgelerine hala diyor ki: Harita üzerinde belirtilen bindirmeyi sunarken

Dönüş Değeri

oluşturucu kullanmak. Eğer nil döndürürseniz, belirtilen yer paylaşımı nesnesi için hiçbir içerik çizilmez.

Tanımadığım bir bindirme geçtiyse ne yapmam gerekiyor?

cevap

2

En son MKMapView.h göre, yeni fonksiyon beyanı şimdi:

// Current renderer for overlay; returns nil if the overlay is not shown. 
@available(iOS 7.0, *) 
func rendererForOverlay(overlay: MKOverlay) -> MKOverlayRenderer? 
+0

emin değil hangi konuşmak çalışır. Protokol işlevi hakkında konuşuyorum 'func mapView (mapView: MKMapView, rendererForOverlay yer paylaşımı: MKOverlay) -> MKOverlayRenderer!' – Grimxn

+0

Oh üzgünüm, hatam. Bu ObjC sürümü bile sıfır olmayan bir geri dönüşü belirtir. Ben bunun cevabını aramaya devam ediyorum ... –

+0

Aslında sadece hata # 21581742 bunun üzerine dosyalanmış. –