Objective c iOS:以编程方式将数据写入json文件
我的json文件如下所示:Objective c iOS:以编程方式将数据写入json文件,objective-c,json,nsmutablearray,writefile,Objective C,Json,Nsmutablearray,Writefile,我的json文件如下所示: { "images": [ "straight up kick.png", "women kick.png", "Taekwondo Kanji vertical.png", "face kick3.png", "flexibility.png", "Punch.png", "hook kick.png", "front kick 2.png" ] } 我以编程方式阅读上面的json,如下所示: NSString *path =
{
"images": [
"straight up kick.png",
"women kick.png",
"Taekwondo Kanji vertical.png",
"face kick3.png",
"flexibility.png",
"Punch.png",
"hook kick.png",
"front kick 2.png"
]
}
我以编程方式阅读上面的json,如下所示:
NSString *path = [[NSBundle mainBundle] pathForResource:@"generated" ofType:@"json"];
NSData *data = [NSData dataWithContentsOfFile:path];
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
NSMutableArray * jsonimages = [dict objectForKey:@"images"];
NSLog(@"images %@", jsonimages);
我想通过编程方式写入json文件,向名为jsonimages的数组添加更多项。
Json文件名为generated.Json
任何帮助都将不胜感激。您尝试过什么?您的问题是在
dict
中添加对象(注意它是不可变的)、jsonimages
还是将其保存回去?因为您无法写入[NSBundle mainBundle]
。
- (void)writeStringToFile:(NSString*)aString {
// Build the path, and create if needed.
NSString* filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString* fileName = @"generated.json";
NSString* fileAtPath = [filePath stringByAppendingPathComponent:fileName];
if (![[NSFileManager defaultManager] fileExistsAtPath:fileAtPath]) {
[[NSFileManager defaultManager] createFileAtPath:fileAtPath contents:nil attributes:nil];
}
// The main act...
[[aString dataUsingEncoding:NSUTF8StringEncoding] writeToFile:fileAtPath atomically:NO];
}
- (NSString*)readStringFromFile {
// Build the path...
NSString* filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString* fileName = @"generated.json";
NSString* fileAtPath = [filePath stringByAppendingPathComponent:fileName];
// The main act...
return [[NSString alloc] initWithData:[NSData dataWithContentsOfFile:fileAtPath] encoding:NSUTF8StringEncoding];
}