Optionale Variablen im Protokoll möglich?

protocol AProtocol: BProtocol {
    ///content to be shown on disclaimer Label of cell
    var disclaimer: String {get set}
    var cellDisclaimerAttributed: NSAttributedString {get}
    var showSelection: Bool {get set}
    var isReadMore: Bool {get}
}

Ich möchte Variablen optional, so dass ich brauche nicht implementieren alle Variablen jedes mal nach der konformen Protokolls. Wie in Objective-C, wir haben für Methoden:

protocol AProtocol: BProtocol {
    ///content to be shown on disclaimer Label of cell
    optional var disclaimer: String {get set}
    optional var cellDisclaimerAttributed: NSAttributedString {get}
    optional var showSelection: Bool {get set}
    optional var isReadMore: Bool {get}
}

Ist es möglich?

  • Die Fehlermeldung für das zweite Beispiel, das Sie geben, sagt "'optional' kann nur angewendet werden, um Mitglieder einer @objc-Protokoll" (hint hint)
  • Duplikat von stackoverflow.com/questions/31478562/... oder stackoverflow.com/questions/31333863/... ?
  • Oben links über Methoden sprechen nur. @MartinR
  • Macht es einen Unterschied?
  • Nein, nach dem hinzufügen @objc zu den Protokollen, noch dass ein Fehler ausgegeben wird, um alle Variablen in dieser Klasse.
  • ja für Methoden, es funktioniert, aber nicht für Variablen.
  • Sind Sie sicher? Ich habe gerade versucht @objc protocol MyProtocol { @objc optional var disclaimer: String { get set } } und class Foo: MyProtocol { }.
  • Bitte entsprechen Sie dieses Protokoll, um jede andere Klasse, erhalten Sie die Fehlermeldung.
  • Wenn AProtocol erbt von BProtocol dann natürlich beide Protokolle (und die optionale Eigenschaft) müssen gekennzeichnet sein mit @objc.

Schreibe einen Kommentar