ios - How can i add a completion handler to this function? -
i have function calls it's self if conditions not met (which works fine) want add completionhandler it, i've tried different ways completion never returned of ways i've attempted.
runsearch()
func runsearch(){ search{ _ in if (parresults.count < 20 && self.searchcounter < 20){ self.runsearch()//run search again** } if (parresults.count >= 20 && self.searchcounter < 20){ self.searchcomplete = true } } }
what i've tried
runsearch() completionhandler call
self.runsearch{ msg in print("all done") //not executed }
runsearch() completionhandler func 1
func runsearch(completionhandler: (bool) -> ()) -> () { search{ _ in if (parresults.count < 20 && self.searchcounter < 20){ self.runsearch{ _ in } } if (parresults.count >= 20 && self.searchcounter < 20){ self.searchcomplete = true completionhandler(true)// never returned } } }
runsearch() completionhandler func 2
func runsearch(completionhandler: (bool) -> ()) -> () { search{ _ in if (parresults.count < 20 && self.searchcounter < 20){ self.runsearch{ _ in if (parresults.count >= 20 && self.searchcounter < 20){ self.searchcomplete = true completionhandler(true)//not returned } } } if (parresults.count >= 20 && self.searchcounter < 20){ self.searchcomplete = true } } }
you need pass completionhandler
down line each new call runsearch
:
func runsearch(completionhandler: (bool) -> ()) { search{ _ in if (parresults.count < 20 && self.searchcounter < 20){ self.runsearch(completionhandler) // <------- } else if (parresults.count >= 20 && self.searchcounter < 20){ self.searchcomplete = true completionhandler(true) } } }
Comments
Post a Comment