我目前正在使用四行从mapViewDidSelectMKAnnotationView
中解开标题。
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
if let title = view.annotation?.title {
if let title = title {
// do something with title
}
}
}
我可以这样做而不必重新包装东西吗?像这样:
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
if let title = view.annotation?.title? {
// do something with title
}
}
This answer似乎很贴近这个问题,但是没有解决最深的属性是可选的情况。看来这是一件微不足道的事情,我敢肯定一定有办法,但我无法弄清楚我一生的语法。
答案 0 :(得分:2)
您可以这样做:
if let title = view.annotation?.title as? String {
}
view.annotation?.title
是一个双精度可选字符串:String??
,因为annotation
的属性MKAnnotationView
和它自己的属性title
都是可选的。 / p>
您也可以像这样使用 guard 语句:
guard let title = view.annotation?.title as? String else {
return
}
//use title in the rest of the scope
您还可以使用switch
语句:
switch title {
case .some(.some(let t)):
//use the title here
print(t)
default:
break
}
答案 1 :(得分:0)
要解开单个可选字符串,可以使用
let title = (view.annotation.title ?? nil)
然后您可以使用空合并来回退到默认字符串:
let title = (view.annotation.title ?? nil) ?? "fallback string"