2011-11-11 18 views
0

サーバに投稿したいデータがあるとします。あなたは深く深い地下の地下貯蔵庫(またはあなたはt-mobileを使用しています)にいて、インターネットに接続していません。そのデータはどこに行きますか?ちょうどそれを残して、接続を待つ?私はむしろそのデータを保存し、あなたが接続している2番目のアップロードのために利用できるようにします。データをストレージに保存する

SQliteを使用するのが最適な方法でしょうか?それは私が一時的に保管したいオブジェクトのカップルです。

答えて

0

アップルは、インターネット接続が利用可能かどうかを確認する必要があることを指定しています。あなたが失敗を要求すると、あなたはエラーを受け取るでしょう。

データを後で送信できる場合は、保存して後で再試行してください。後でデータを送信できない場合は、データを送信できなかったことをユーザーに通知します。

すべてはアプリの仕様によって異なります。

plist、SQLite、coredataを使って、デバイスにデータを保存し、ネットワーク接続が利用可能になったときにそれらをサーバーに送信しました。

データをデータベースに保存する準備ができている場合は、データをサーバーに送信したかどうかを示すビットを追加するだけで、サーバーはアップロードの識別子を返すようになります。後で。

0

それは大きなものではない場合、あなたはそれが何か大きなであれば、私はあなたはそれがオブジェクトの唯一のカップルの場合はどちらかCore Data

1

を使用するNSUserDefaultsまたはPLISTにデータを保存することをお勧めしますNSUserDefaults

を使用することができますファイル。設定

NSUserDefaults:

[[NSUserDefaults standardUserDefaults] setObject:savedStr forKey:objectDataStoreName]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

NSUserDefaultsが得る:

savedStr = [[NSUserDefaults standardUserDefaults] objectForKey:objectDataStoreName]; 

またはplistを使用します。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *newDirectory = [NSString stringWithFormat:@"%@/savedData", [paths objectAtIndex:0]]; 
[[NSFileManager defaultManager] createDirectoryAtPath:newDirectory withIntermediateDirectories:YES attributes:nil error:nil]; 
NSString *fullFileName = [NSString stringWithFormat:@"%@/savedItemsFile", newDirectory]; 

savedItems = [[NSMutableArray alloc] initWithContentsOfFile:fullFileName]; 
if (!savedItems) { 
    savedItems = [[NSMutableArray alloc] init]; 
} 
savedItem = [[NSMutableDictionary alloc] init]; 

[savedItem setObject:savedStr forKey:objectDataStoreName]; 
[savedItems addObject:savedItem]; 

[savedItems writeToFile:fullFileName atomically:NO]; 
+0

グレートサンプルコードを。小さな問題を抱えています:サーバーへの接続を保護する必要がありますか(SSLなど)? – user523234

+0

上記は、デバイスにローカルにデータを保存するだけで、サーバーは関与しません。データがリモートサーバーに送信されたときに安全なデータ接続を使用するかどうかは、ユーザー、視聴者、データの種類、機能要件に依存します。 – ader

関連する問題