2015-08-25 47 views
0

当设备上没有互联网连接时,我将json存储到文本文件中。但问题是,如果我再做一次,它会被取代。这是我为存储到文本文件中所做的。如何将多个json对象存储在文本文件中。当我获得连接时,我需要将json发布到服务器。将多个json对象存储到文本文件中iOS

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *docDir = [paths objectAtIndex:0]; 
NSString *filePath = [docDir stringByAppendingPathComponent:@"File.json"]; 
[jsonString writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error]; 

请指教。

回答

1

这并不像连接多个JSON文件那么直截了当而不是会生成有效的JSON文件。要正确执行此操作,需要阅读并解析现有的JSON文件,该文件将为您提供NSArrayNSDictionary顶级对象,然后附加新JSON文件中的数据并写出所有内容。

当您处理旧数据时效率低下。

因此,我建议您将新数据写入新文件,使用当前日期/时间作为文件名,以及何时需要上载,读取每个文件并单独上传,一个一个地上传,时间。然后删除上传的每个文件。以下方法

0

使用将文本追加到文件

-(void) writeToLogFile:(NSString*)content{ 
content = [NSString stringWithFormat:@"%@\n",content]; 

//get the documents directory: 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *docDir = [paths objectAtIndex:0]; 
NSString *filePath = [docDir stringByAppendingPathComponent:@"File.json"]; 

NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:fileName]; 
if (fileHandle){ 
    [fileHandle seekToEndOfFile]; 
    [fileHandle writeData:[content dataUsingEncoding:NSUTF8StringEncoding]]; 
    [fileHandle closeFile]; 
} 
else{ 
    [content writeToFile:fileName 
       atomically:NO 
       encoding:NSStringEncodingConversionAllowLossy 
        error:nil]; 
} 

}

+0

而且是结果有效的JSON? – trojanfoe

+0

是保持一些分隔符,而附加它并检索json数据使用此seperator&post到你的服务器。 – poojathorat

相关问题