0

こんにちは、SQLite でのデータベースの挿入が進行中の場合、進行状況バーの進行状況を更新する必要があります。これには 5 分かかるためです。

しかし、データベースの挿入が進むと、UI がハングし、それ以上の操作を実行できなくなります。このメソッドを使用して進行状況バーを更新します。

-(void)setProgress:(float)progress
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,
                                             (unsigned long)NULL), ^(void) {
        [progressview setProgress:progress animated:YES];
    });
}

データベースの挿入中にプログレスバーを更新する方法を教えてください

4

2 に答える 2

0

バックグラウンド管理対象オブジェクトコンテキストの使用に関する私の記事を読んでください:http://www.cocoanetics.com/2012/07/multi-context-coredata/

バックグラウンドキューから進行状況に関する通知を送信してから、メインスレッドで進行状況バーの更新をdispatch_asyncすることができます。

于 2013-01-02T06:44:25.253 に答える
0

おそらくメインスレッドでデータベースの挿入を行っているため、UI がハングしています。

したがって、データベース挿入メソッドの呼び出しを次のように変更します。

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
        //call the database insertion method here
    });

そのメソッドから進行状況バーを更新している場合は、次のように呼び出します。

dispatch_sync(dispatch_get_main_queue(), ^{
    [progressview setProgress:progress animated:YES];
});

他のスレッドから UI 要素を更新しないでください。メイン スレッドからのみ更新してください。

于 2013-01-02T06:02:39.713 に答える