【问题标题】:Adding protocol conformance to existing class then checking if implements?将协议一致性添加到现有类然后检查是否实现?
【发布时间】:2016-03-24 03:00:36
【问题描述】:

我正在尝试将几个现有的类组合成一个自定义协议,这样我就可以对它们一视同仁了。例如,我想将这两个类组合在一个协议下,如下所示:

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

我的处理方法正确吗?任何建议或帮助将不胜感激!

【问题讨论】:

    标签: swift swift2 protocols protocol-extension


    【解决方案1】:

    这样做:

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

    “如果让”变体是:

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

    【讨论】:

      猜你喜欢
      • 2021-10-19
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      相关资源
      最近更新 更多