将多个 json 对象存储到文本文件 iOS
Posted
技术标签:
【中文标题】将多个 json 对象存储到文本文件 iOS【英文标题】:Store multiple json object in to a text file iOS 【发布时间】:2015-08-25 06:10:37 【问题描述】:当设备上没有互联网连接时,我将 json 存储到一个文本文件中。但问题是,如果我再做一次,它就会被替换。这是我正在做的存储到文本文件中的操作。如何在文本文件中存储多个 json 对象。当我获得连接时,我需要将 json 发布到服务器。
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 文件,这将为您提供一个 NSArray
或 NSDictionary
***对象,然后从新的 JSON 文件中附加数据并将整个内容写出来。
这是在处理旧数据时效率低下。
因此,我建议您将新数据写入新文件,使用当前日期/时间作为文件名,并在需要上传时读取每个文件并单独上传,一次一个.然后在上传时删除每个文件。
【讨论】:
【参考方案2】:使用下面的方法将文本附加到文件中
-(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];
【讨论】:
结果是有效的 JSON 吗? 是的,在附加分隔符时维护一些分隔符并使用此分隔符检索 json 数据并发布到您的服务器。以上是关于将多个 json 对象存储到文本文件 iOS的主要内容,如果未能解决你的问题,请参考以下文章