2017-03-20 2 views
0

Est-il possible de créer une variable dans un protocole (implémentation par défaut d'un)? Plus précisément, j'ai une variable requise par le protocole comme:L'implémentation par défaut d'une variable get-set est-elle possible dans une extension de protocole?

protocol SearchHandlingDelegate: class { 
    ... 
    var lastSearchTerm: String { get set } 
    ... 
} 

et espérait avoir une implémentation par défaut de celui-ci dans une extension de protocole que:

extension SearchHandlingDelegate { 
    ... 
    var lastSearchTerm: String { 
     set { lastSearchTerm = newValue } 
     get { return lastSearchTerm } 
    } 
    ... 
} 

Mais ceci est une auto-récursif sans fond appel boucle ... Je pourrais l'avoir renvoyer la valeur d'une autre variable, mais alors il ne sera pas vraiment possible de le faire via une implémentation par défaut du protocole ...

+5

Les extensions ne peuvent pas ajouter de propriétés stockées - vous pouvez cependant utiliser des objets associés à Obj-C, voir par exemple http://stackoverflow.com/q/25426780/2976878 (dupe?) – Hamish

Répondre

2

Vous pouvez fournir des implémentations par défaut des propriétés get/set pour le calcul valeurs, mais vous Impossible d'ajouter du stockage à un type à partir d'une extension.