ios - How to declare a generic protocol property requirement in a protocol -


struggling while with, helpful if can shed light on this:

i have apiworkerprotocol has property requirement, required property protocol i.e dataparserprotocol

protocol apiworkerprotocol {     var apirequestprovider : apirequestgeneratorprotocol {get}     var dataparser : dataparserprotocol{get}     func callapi(completionhandler: @escaping (apicallresult<self.resulttype>) -> void) }  protocol dataparserprotocol {     associatedtype expectedrawdatatype     associatedtype resulttype     func parsefetcheddata(fetcheddata : expectedrawdatatype) -> apicallresult<resulttype> } 

how can achieve this?

in current implementation, causes error protocol 'dataparserprotocol' can used generic constraint because has self or associated type requirements.

thanks in advance

ankit

if protocol make use of self or associated type requirements (a homogenous protocol), may note use protocol concrete type.

so instead of using dataparserprotocol concrete type of dataparser property (blueprinted in apiworkerprotocol), add associatedtype typeholder, dataparser, apiworkerprotocol, is constrained types conform to dataparserprotocol.

also, i'm not sure intent using self.resulttype specialization in completion handler of callapi(...) (since self refer type implementing apiworkerprotocol; protocol blueprints no associatedtype resulttype): did mean use resulttype of dataparserprotocol type?

e.g.

protocol apiworkerprotocol {     associatedtype dataparser: dataparserprotocol     var dataparser : dataparser { }     func callapi(completionhandler: @escaping (apicallresult<dataparser.resulttype>) -> void) }  protocol dataparserprotocol {     associatedtype expectedrawdatatype     associatedtype resulttype     func parsefetcheddata(fetcheddata: expectedrawdatatype) -> apicallresult<resulttype> } 

Comments

Popular posts from this blog

php - Vagrant up error - Uncaught Reflection Exception: Class DOMDocument does not exist -

vue.js - Create hooks for automated testing -

Add new key value to json node in java -