2017-08-23 2 views
1

En essayant de se conformer à NSItemProviderReading, je reçois l'erreur suivante: enter image description hereConformes à une fonction statique qui retourne « Self »

La définition du protocole de cette méthode est la suivante:

public static func object(withItemProviderData data: Data, typeIdentifier: String) throws -> Self 

Le La fonction statique du protocole retourne le type "Self", j'ai essayé de le changer pour le nom de la classe réelle, mais il ne sera plus conforme à NSItemProviderReading.

Comment peut-on retourner "Self"?

Mise à jour: C'est ce qui se passe quand je demande Xcode pour le fixer: enter image description here

Il ajoute que! Self, mais montre ensuite 2 erreurs et cet avertissement, il semble confus car il semble qu'il veut revenir à la façon dont il était avant, retournant l'instance de la classe dans ce cas NameData

+0

double possible du [protocole de retour Self] (https://stackoverflow.com/questions/25645090/protocol-func-returning-self) – nayem

+1

Essayez de faire une classe 'NameData' finale – user3581248

Répondre

4

Self dans un protocole est une exigence que la conformité du protocole utilise leur propre type. Vous devez donc remplacer Self par NameData dans le type de retour de la méthode lorsque vous vous conformez dans votre extension de classe.

extension NameData: NSItemProviderReading { 
    static func object(withItemProviderData data: Data, typeIdentifier: String) throws -> NameData { 
     return NameData(name: "Test") 
    } 
} 

Et une chose, vous devez faire de votre classe NameData final.

+1

Thats it, la clause finale! –