0

いくつかの既存のクラスを 1 つのカスタム プロトコルにグループ化して、それらを同じように扱えるようにしようとしています。たとえば、次のように、これら 2 つのクラスを 1 つのプロトコルでグループ化したいと思います。

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

私はこれに正しく取り組んでいますか?アドバイスやヘルプをいただければ幸いです。

4

1 に答える 1

1

次のようにします。

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

「if let」バリアントは次のようになります。

if let template = template as? CLKComplicationTemplateRingable {
    print("\(template.fillFraction)")
}
于 2016-03-24T03:34:25.247 に答える