Swift 中的 dequeueReusableAnnotationViewWithIdentifier
dequeueReusableAnnotationViewWithIdentifier in Swift
我有以下代码,用于尝试使注释视图出列,然后在它不存在时创建一个,但有一点重复,这看起来不像 "swift" 方式。关于如何改进这一点有什么建议吗?
func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {
let identifier = "annotation"
if let annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier) as? MKPinAnnotationView {
configureAnnotationView(annotationView)
return annotationView
} else {
let annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
configureAnnotationView(annotationView)
return annotationView
}
}
您的代码看起来不错。
一种缩短它的方法可能是
let annotationView =
mapView.dequeueReusableAnnotationViewWithIdentifier(identifier) ??
MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
那么你也只需要一个 return
语句而不需要 if
子句。
我有以下代码,用于尝试使注释视图出列,然后在它不存在时创建一个,但有一点重复,这看起来不像 "swift" 方式。关于如何改进这一点有什么建议吗?
func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {
let identifier = "annotation"
if let annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier) as? MKPinAnnotationView {
configureAnnotationView(annotationView)
return annotationView
} else {
let annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
configureAnnotationView(annotationView)
return annotationView
}
}
您的代码看起来不错。
一种缩短它的方法可能是
let annotationView =
mapView.dequeueReusableAnnotationViewWithIdentifier(identifier) ??
MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
那么你也只需要一个 return
语句而不需要 if
子句。