将协议一致性添加到现有类,然后检查是否实现?

时间:2016-03-24 03:00:37

标签: swift swift2 protocols protocol-extension

我试图将几个现有的类组合成一个自定义协议,所以我可以对它们进行相同的处理。例如,我想在这样的单一协议下将这两个类组合在一起:

protocol CLKComplicationTemplateRingable {
    var fillFraction: Float { get set }
}

extension CLKComplicationTemplateCircularSmallRingText: CLKComplicationTemplateRingable {

}

extension CLKComplicationTemplateModularSmallRingText: CLKComplicationTemplateRingable {

}

为什么我这样做,我不能这样做:

if let template as? CLKComplicationTemplateRingable {
    print("\(template.fillFraction)")
}

它没有编译,它会出现此错误:Variable binding in a condition requires an initializer

我接近这个吗?任何建议或帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

这样做:

if template is CLKComplicationTemplateRingable {
    print("\(template.fillFraction)")
}

“if let”变体将是:

if let template = template as? CLKComplicationTemplateRingable {
    print("\(template.fillFraction)")
}