使用Xcode 7 beta 5,以下代码:
public func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView?
{
guard let title: String = annotation.title else // compile error
{
return nil
}
...
...不会编译错误“可选类型'String的值?'没打开;你的意思是用'!'或'?'?“。 MKAnnotation 是具有可选字符串:的协议
public protocol MKAnnotation : NSObjectProtocol {
...
optional public var title: String? { get }
...
}
可能很明显,但我看不出有什么问题。你有看到? 感谢。
编辑:我不相信它是“Value of optional type String? not unwrapped”的副本,因为在后一种情况下没有可选择的绑定暂定。
答案 0 :(得分:0)
我可能找到了答案:"可选"和"?"似乎使类型绑定等效于双重可选String,即:" String ??"。以下代码编译正常:
guard let titleStillOptional = annotation.title, let title = titleStillOptional else
{
return nil
}
答案 1 :(得分:-1)
你没有设置保护类型,只需使用:
guard let title = annotation.title else {
return nil
}