EventKitデータベースへのクエリをキャンセルできるかどうかを調べようとしています。特定の週のすべてのイベントに一致する述語を使用してEventKitにクエリを実行します。返されるイベントの数によっては、このクエリに時間がかかる場合があります。
なぜこれが欲しいのですか?さて、私のiPhoneアプリでは、ユーザーは自分のカレンダーの週を閲覧します。新しい週がユーザーに表示されるたびに、アプリはその週のすべてのイベントを読み込む必要があります。これには数百ミリ秒かかるため、アプリは本来あるべきほど応答しません。ユーザーは、別の週を閲覧するたびにユーザーインターフェースが短時間停止するため、基本的に少し遅く閲覧する必要があります。
「performSelectorInBackground」を使用して、バックグラウンドスレッドですでにクエリを実行しています。これはまだユーザーインターフェイスをかなり失速させます。私が考えている解決策は、ユーザーが別の週を参照することを決定するたびに、現在のEventKitクエリがキャンセルされることです。これの欠点は、クエリがキャンセルされたためにユーザーがその週のイベントをすぐに表示しない場合があることですが、UIは常に応答性が高いことを願っています。
それで、これはまったく可能ですか?誰か知っている?EventKitクエリをキャンセルできますか?多分それが実行されているスレッドを停止することによって?どんなアドバイスも大歓迎です!