2017-07-10 35 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]; 

我正在分配我的API,其中我想保存plist中的數據的URL,而我的plist在其中我的數據已經保存的文件路徑。誰能解決這個問題。

+0

你實現一個對於互聯網使用連續檢查甚至在後臺的任何代碼?首先這樣做,上傳是第二件事。 在這裏尋找答案。 https://stackoverflow.com/questions/38691583/detecting-internet-connectivity-continually 然後在ReachableViaWWAN或ReachableViaWiFi案例中添加您在項目中使用的上傳代碼。 – Jamil

+0

是的,當然我已經實現了檢查網絡連接的代碼 –

+0

然後通過pod包含網絡連接並在網絡連接文檔中查找上傳代碼片段。用plist替換文件名。 – Jamil

回答

0

我想你使用普通的API調用來存儲pList文件到服務器。 因爲當你讀取plist文件時,你的意志數據會在NSDictionary中發送,並且你將它發送給服務器來存儲。

從plist中讀取值:

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

要發送這個字典服務器,你可以使用AFNetworking

存儲valude到的plist:

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:]:零字符串參數」 –

+0

如何檢查先前保存的plist數據 –

+0

您的plist存儲在哪裏??? – Nirmalsinh

相關問題