使用可选绑定编译错误

时间:2015-08-12 19:46:32

标签: swift

使用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”的副本,因为在后一种情况下没有可选择的绑定暂定。

2 个答案:

答案 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
}