2017-07-10 10 views
1

ネットワーク接続が利用できないときにplistを使用してデータをローカルに保存しています。ネットワークが利用可能なときは、ローカルに保存されたデータをWebサーバーに同期します。plistに保存されたデータをWebサーバーと同期させる方法は?

私はこのコードを使用しています。しかし、私はデータがサーバーに保存されているかどうかはわかりません。

NSURLSessionConfiguration * configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; AFURLSessionManager * manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];

NSURL *URL = [NSURL URLWithString:@"http://example url"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:URL]; 

NSURL *filePath = [NSURL fileURLWithPath:@"file://my plist file"]; 
NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithRequest:request fromFile:filePath progress:nil completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { 
    if (error) { 
     NSLog(@"Error: %@", error); 
    } else { 
     NSLog(@"Success: %@ %@", response, responseObject); 
    } 
}]; 
[uploadTask resume]; 

私はPLISTのデータを保存するURL、そして私のデータが既に保存されているファイルパスに私のplistに私のAPIを割り当てています。誰でもこの問題を解決できますか?

+0

あなたが継続的にも、バックグラウンドでインターネットが使用可能かどうか確認し任意のコードを実装しましたか?まず、アップロードは2番目のことです。 ここで答えを探します。 https://stackoverflow.com/questions/38691583/detecting-internet-connectivity-continually あなたのプロジェクトで使用しているかもしれないアップロードコードをReachableViaWWANまたはReachableViaWiFiのケースで追加します。 – Jamil

+0

もちろん、私はネットワーク接続を確認するためのコードを実装しています –

+0

その後、ポッドを経由してafnetworkingを組み込み、afnetworkingのドキュメントの下でアップロードするスニペットを探します。ファイル名をplistに置き換えます。 – Jamil

答えて

0

通常のAPIコールを使用して、サーバーにpListファイルを保存すると思います。 あなたがplistファイルを読むと、あなたの意志のデータがNSDictionaryになり、それをサーバーに送信して保存します。 PLISTから値を読み取ることが

NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"YOUR_PLIST_NAME" ofType:@"plist"]; 
NSDictionary *dicData = [NSDictionary dictionaryWithContentsOfFile:plistPath]; 

サーバーにこの辞書を送信するには、AFNetworkingを使用することができます。 plistのに格納valudeへ

NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsPath = paths.firstObject; 
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"File.plist"]; 
NSError *writeError = nil; 
NSDictionary *finalDict = @{@"Objects": objects}; 
NSData *plistData = [NSPropertyListSerialization dataWithPropertyList:finalDict format:NSPropertyListXMLFormat_v1_0 options:NSPropertyListImmutable error:&writeError]; 
if(plistData){ 
    [plistData writeToFile:plistPath atomically:YES]; 
} 
else { 
    NSLog(@"Error in saveData: %@", error); 
} 
+0

私のプロジェクトがクラッシュし、理由は「[NSURL initFileURLWithPath:]:nil文字列パラメータ」 –

+0

以前に保存したplistデータを確認する方法 –

+0

plistが保存されている場所??? – Nirmalsinh

関連する問題