2017-07-10 31 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

相关问题