添加/编辑JSON数据iOS?

Alg*_*der 1 json objective-c ios ios7

我正在使用以下代码从本地驱动器获取JSON数据。效果很好

现在我想将JSON数据添加到相同的URL

我不想创建和替换以前的json文件

可能吗??

有什么简单的方法吗?

NSURL *fileUrl=[NSURL URLWithString:@"localDriveURL"];
//NSData *data = [NSData dataWithContentsOfFile:filePath];
NSData *data=[NSData dataWithContentsOfURL:fileUrl];
NSError* error;

NSArray* json = [NSJSONSerialization JSONObjectWithData:data //1
                                                     options:NSJSONReadingMutableContainers
                                                       error:&error];

NSArray *json2=[json valueForKey:@"locations"];

for (int i=0; i<json2.count; i++) {

}
Run Code Online (Sandbox Code Playgroud)

Wai*_*ain 5

如果该文件是应用程序捆绑包的一部分,则您不能对其进行任何更改。

一般来说,您确实希望替换现有文件。

尽管您可以用来NSFileHandle向文件中写入其他数据,但它相对复杂,并且很可能损坏JSON(当您犯下索引错误或类似的错误时)。

最好的选择是(按原样)读取可变数据,然后进行修改并用于NSJSONSerialization再次转换回数据,然后将该数据保存到磁盘(替换原始数据)。

您当前的代码实际上应该是:

NSMutableArray* json = [...
Run Code Online (Sandbox Code Playgroud)

由于您使用的是可变容器选项。

然后,您可以向数组添加一些新项目:

[json addObject:@"Stuff"];
[json insertObject:@"Other Stuff" atIndex:0];
Run Code Online (Sandbox Code Playgroud)

然后重新保存:

data = [NSJSONSerialization dataWithJSONObject:json options:nil error:&error];
[data writeToURL:fileUrl atomically:YES];
Run Code Online (Sandbox Code Playgroud)