2016-08-22 4 views
2

私は自分のデータベースにイメージの配列を保存するメソッドを持っています。これはバックグラウンドで起こるので、ユーザがナビゲーションコントローラをポップして複数の画像を保存しないままにする可能性があります。アプリケーション全体を通して実行中のメソッド - IOS

- (void) sendToCloud{ 
    sending = true; 
    if (cloudQueue.count != 0) { 
     [[cloudQueue firstObject] saveInBackgroundWithBlock:^(BOOL succeeded, NSError * _Nullable error) { 
      if (succeeded) { 
       [cloudQueue removeObjectAtIndex:0]; 
       [self sendToCloud]; 
      }else{ 
       [self sendToCloud]; 
      } 
     }]; 
    }else{ 
     sending = false; 
    } 
} 

は、私は、ユーザーがどこへ行っても、この方法を実行し続けるように、この方法を実行するために、私のNavigationControllerに通知を送信する必要がありますか?どのようにこのメソッドを実行し続けることができますか?

答えて

1

これらの画像を失う可能性のある方法はたくさんあります。たとえば、アプリが殺される可能性があります。あなたが何をしても、彼らはなくなってしまった。

良い方法は、すべてのイメージをコアデータモデルに保存してディスクに保存することです。バックグラウンドアップロードを調整するモデルコントローラを作成します。モデルコントローラはどのView Controllerにも属さず、すべて送信されるまで動作します。クラウド内の画像を削除することができます。

このように、アプリが起動すると、送信されていない画像があるかどうかを確認することもできます。モデルコントローラは単にアップロードを続けます。

この方法の利点は、画像が失われず、ネットワーク接続性が悪いことです(画像は送信できるまでモデル内にとどまります)。

実際にコアデータを使用したくない場合は、イメージをディスクに保存することができます。それらをキャッシュディレクトリのサブディレクトリに置くと、コントローラはサブディレクトリが空になるまで(続けて削除する)送信し続けることができます。

関連する問題