2009-07-21 8 views
0

私はかなり大きなMutableDictionrayをロードしています。私はUIProgressBarを使いたいと思います。誰もこの作業をするためのローディング時間を決定する方法の提案はありますか?UIProgressBar loading NSMutableDictionary

おかげ

+0

私はiPhoneのプログレスバーを見たことは考えられません。元のインストールで受け入れます。 UIActivityIndi​​catorsは頻繁に使用されています。使用するための簡単なチュートリアルが必要な場合は、私が手伝ってください。元の質問から気を散らすために申し訳ありません。 – TahoeWolverine

+0

実際、それらはかなり頻繁に使用されています。値は0.0〜1.0です。私はちょうど辞書を読み込むことでそれを行う方法を理解する必要があります。 私はUIActiviyInidicatorの使い方を知っていますが、プログレスバーはこのプログラムの視覚的に優れています。 – Xcoder

答えて

1

私はあなたがこれに対する簡単な答えを見つけることができます信じているが、ここではいくつかのポインタではありません。私はあなたが現在-dictionaryWithContentsOfFile:でこれをロードしていると仮定します。

  • まず、ユーザーが長い時間負荷をかけられるのを待たずに、データストレージを変更することを検討してください。コアデータは、非常に大きな辞書よりも優れたツールです。

  • にファイル-[NSFileHandle readDataOfLength:]を読み込んでチャンクして、進行状況バーを更新することができます。これをバックグラウンドスレッドで行い、通知をポストするか、メインスレッドでデリゲートメソッドを呼び出して進行状況インジケータを更新させることができます。

  • -readInBackgroundAndNotifyを試してみるとよいでしょう。私はiPhoneの頭の上からバッファーサイズを知ることはできませんが、合理的な間隔で通知を受け取るには十分に小さいかもしれませんし、独自のバックグラウンドスレッドを管理する必要性を取り除くはずです。

  • NSDataにデータを読み込んだら、+[NSPropertyListSerialization propertyListFromData:mutabilityOption:format:errorDescription:を使用して解析します。これはうまくいけば十分速く、何もハングしないはずですが、遅すぎる場合は、バックグラウンドスレッドでこれを行い、最後の進行状況バーの更新の一部にすることができます。ここではUIをスムーズにするためにいくつかの実験が必要な場合があります。