如何将JSON数据保存到iPhone
问题描述:
我有一个json数据来显示一些信息..但我应该生成一个文件来保存这些信息到我的iPhone。想法?如何将JSON数据保存到iPhone
- (void)showInfos {
NSMutableDictionary *infoDictionary = [[NSMutableDictionary alloc]init];
[infoDictionary setObject:self.totalDuration.text forKey:@"totalFrames"];
NSMutableArray *nodesArray = [[NSMutableArray alloc]init];
[nodesArray addObject:@{@"x":@(_zeroButton.frame.origin.x),@"y":@(_zeroButton.frame.origin.y),@"frame":self.zeroBtnLbl.text}];
[nodesArray addObject:@{@"x":@(_firstButton.frame.origin.x),@"y":@(_firstButton.frame.origin.y),@"frame":self.firstBtnLbl.text}];
[nodesArray addObject:@{@"x":@(_secondButton.frame.origin.x),@"y":@(_secondButton.frame.origin.y),@"frame":self.secondBtnLbl.text}];
[nodesArray addObject:@{@"x":@(_thirdButton.frame.origin.x),@"y":@(_thirdButton.frame.origin.y),@"frame":self.thirdBtnLbl.text}];
[nodesArray addObject:@{@"x":@(_fourthButton.frame.origin.x),@"y":@(_fourthButton.frame.origin.y),@"frame":self.fourthBtnLbl.text}];
[infoDictionary setObject:nodesArray forKey:@"nodes"];
NSLog(@"dicArray:%@",infoDictionary);
NSData *data = [NSJSONSerialization dataWithJSONObject:infoDictionary options:kNilOptions error:nil];
NSArray *retDicArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
NSLog(@"retDicArray:%@",retDicArray);
}
答
您可以编写数据使用的NSData
writeToFile:atomically:方法文件。
NSData *data = [NSJSONSerialization dataWithJSONObject:infoDictionary options:kNilOptions error:nil];
NSString *docDir = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSString *filePath = [docDir stringByAppendingPathComponent:@"MyJSONFile.json"];
[data writeToFile:filePath atomically:YES];
答
您是否确实需要将其保存到文件中,或者您只是想将信息序列化到应用程序中?
我个人经常使用NSUserDefaults在应用程序内保存简单的用户信息。
例如,如果要存储一个整数:当你想找回
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setInteger:newDistance forKey:@"myInteger"];
[defaults synchronize];
然后,只需做:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
int myInteger = (int)[defaults integerForKey:@"myInteger"];
您还可以存储的NSArray,所以它应该工作为你。
如果你有更复杂的序列化结构,你可以使用核心数据,但它要复杂得多。
+0
是@pralthom ..我必须将信息保存到一个文件中,以相互比较信息..你有替代解决方案吗? –
谢谢你的回答。但我在哪里可以看到我的手机中的文件...找不到它。 @midhunMP –
@deniz如果您使用iPhone模拟器,它将位于您的应用程序目录中。如果您使用的是调试/开发版本,那么使用Xcode的组织器下载容器并在文件夹中检查它。在生产/应用商店构建中,没有直接的方法来检查,除了回读内容。但是,您可以在您的应用中启用iTunes文件共享(但是您必须拥有App Store批准的有效理由) –
但是如果有人想阅读结果,他将如何得到它......这是主要问题..例如, windows用户.. @midhunMP –