2016-04-14 7 views
0

私は3つの画面がUITabBarViewControllerでアプリケーションにあります。ローカルファイルがSwiftの最新バージョンであるかどうかを自動的にチェックします

私は、アプリドキュメントフォルダにあるファイルを一覧表示するUITableViewを持っています。

私はCoreDataを使用して、ファイルごとに関連オブジェクトを格納しています。

これらのオブジェクトには、バージョン番号のプロパティと、リモートリポジトリをチェックするメソッドがあります。

したがって、ファイルが古くなっているかどうかをチェックするのは、ローカルバージョン番号<リモートバージョン番号と同じくらい簡単です。

私の質問は、これらのバックグラウンドチェックを管理する最良の方法は何ですか?私は、ビューが読み込まれるときにチェックすることができましたが、それはUIをブロックし、このチェックが設定された間隔でバックグラウンドで実行されるようにします。

私の限られた経験から、これはGCDのケースであり、何らかの設定間隔があることがわかりますか?アプリの起動時にこのタイマーを実行させるにはどうすればよいですか?バックグラウンドで実行して更新するにはどうすればよいですか?

ありがとうございます!

+0

あなたの問題が本当に明確ではありません。あなたが現在持っているコードを表示します - なぜそれがメインスレッドをブロックしますか? – Wain

答えて

0

スレッドを使用する必要があります。これは、現在のビューのUIと機能的なアクティビティを妨げずに、バックグラウンドでタスクを実行するのに役立ちます。

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(true) 

     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {() -> Void in 
      // Your task code 
     } 

    } 
0

とにかくリモートリポジトリへのアクセスには時間がかかります。だから私はリポジトリへのasynchroneリクエストを使用して、チェックパスが完了するまでユーザーのためのスピナー(アクティビティインジケータビュー)を表示するべきだと思います。便利なのは、リモートリポジトリがチェックするファイルの量を指定することです。 テーブルビューでは、画面上の一部の情報しか表示されません。たとえば、最初の10個のファイルのバージョンを要求する必要があります。その後、10個以上のファイルがあります。 私はあなたのロジックを知っていませんが、テーブルのファイルバージョンを確認し、ファイル情報を更新するのに時間がかかりません。 iOSの絶対的な新機能については、NSURLSessionクラスまたはAFNetworkingライブラリを参照してください。