我目前有一个函数,如果条件不满足,它会调用self(工作非常好),但现在我想向它添加一个completionHandler,我已经尝试过不同的方法,但从未返回completion,这是我尝试过的任何方法
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
}
}
}
我尝试过的
带有completionHandler调用的runSearch()
self.runSearch{
msg in
print("all done") //Not executed
}
带有completionHandler函数1的runSearch()
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
}
}
}
带有completionHandler函数2的runSearch()
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
}
}
}
每次新调用runSearch
:时,您都需要将您的completionHandler
传递给
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)
}
}
}
func runSearch(completionHandler: (Bool) -> ()) -> () {
search{
_ in
if (parResults.count < 20 && self.searchCounter < 20){
self.runSearch(completionHandler)
}
if (parResults.count >= 20 && self.searchCounter < 20){
self.searchComplete = true
completionHandler(true)// Never returned
}
if (parResults.count == 0 && self.searchCounter == 20){
self.noResultsFound = true
completionHandler(true) //Never returned
}
if (parResults.count != 0 && self.searchCounter == 20){
self.searchComplete = true
completionHandler(true) // Never returned
}
}
}