2017-11-28 6 views
0

私は、特定のネットワーク要求が完了したときに呼び出されるようにする完了ハンドラを持つSwift関数を持っています。サーバの応答がより多くのデータがあると言えば(offsetが提供されている)、ネットワーク要求を繰り返すことができます。2番目の呼び出しで呼び出されなかったSwift Completion Handler

私は当初、このようにそれを呼び出す:

func myMainFunction(){ 
    getTasks(project: project, paginationToken: nil) { 
    print("This never fires...") 
    } 
} 

そして、私のgetTasks()機能は、このようなものです:

offsetは決してありません場合は、completion()ハンドラが正常に動作します。しかし、getTasks()を再度呼び出さなければならない場合、補完ハンドラは何らかの形で無効化され、元のmyMainFunction()には返されません。

アイデア?

答えて

2

オフセットが空でない場合は、空のクロージャを渡しています。完了パラメータを転送してgetTasksをもう一度行う必要があります。これを試して。

//... 
if !offset.isEmpty { 
    getTasks(project: project, paginationToken: offset, completion: completion) 
} 
//... 
+0

わかりました。したがって、本質的に元の完了ハンドラを追跡しています。後続の関数呼び出しに空白の値を渡すことでそれを削除していました。意味をなさないありがとうございました! :) –

関連する問題