2009-08-25 5 views
1

私は、たいていNSOperationQueueを使用してWebサービス経由でデータをアップロードするlaunchdデーモンを持っています。Webサービス経由でアイテムをディスクにアップロードする永続アイテム

このデータを永続化できるようにする必要があります。そのため、後で(たとえコンピュータがシャットダウンした場合など)セッション間であってもエラーが発生した場合に再アップロードできます。

これは負荷の高いアプリケーションではなく、間欠的に1分または1分ごとに間欠的にアイテムを受信します。間に数時間の間隔があることがよくあります。次のような場所では、この永続性のない

私の最初の実装は次のとおりです。

  1. デーモンは、データを受け取ります。
  2. デーモンは、データをMyDataObject型のオブジェクトに解析します。
  3. デーモンはアップロードするオブジェクトとしてMyDataObjectを使用してNSOperationサブクラスのインスタンスを作成し、NSOperationQueueに追加します。
  4. NSOperationQueueは、できるだけWebサービス経由でMyDataObjectをアップロードしてアップロードします。

この部分はすべて正常に機能します。私が今追加したい部分は、Webサービスの失敗、コンピュータのシャットダウンなどの場合の永続性です。

NSKeyed(Un)アーカイバと一緒にMyDataObjectsのNSMutableArrayを使用できるようですが、まだアップロードされておらず、配列から項目を削除するためのすべての操作の-isFinishedキーを観察していますが、より単純な方法が必要であるように思えます。安全は行く。

誰かが正しい方向に向けることができますか?

答えて

1

アイテムごとに2つの操作を追加できます。最初のアイテムはローカルストレージにアイテムを格納し、2番目のアイテムは最初のアイテムに依存し、成功するとアイテムをローカルストレージから削除します。

ローカルストレージからアイテムを復元する場合は、ローカルストア操作ではなく、ストアツークラウド操作のみを作成します。前と同じように、アイテムはローカルストレージからアイテムが正常に削除されます。失敗した場合は、アイテムをローカルストレージに残して次の試みを行います。

関連する問題