2015-11-02 103 views
0

我有一个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); 
} 

回答

3

您可以编写数据使用的NSDatawriteToFile: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]; 
+0

谢谢你的回答。但我在哪里可以看到我的手机中的文件...找不到它。 @midhunMP –

+0

@deniz如果您使用iPhone模拟器,它将位于您的应用程序目录中。如果您使用的是调试/开发版本,那么使用Xcode的组织器下载容器并在文件夹中检查它。在生产/应用商店构建中,没有直接的方法来检查,除了回读内容。但是,您可以在您的应用中启用iTunes文件共享(但是您必须拥有App Store批准的有效理由) –

+0

但是如果有人想阅读结果,他将如何得到它......这是主要问题..例如, windows用户.. @midhunMP –

0

您是否确实需要将其保存到文件中,或者您只是想将信息序列化到应用程序中?

我个人经常使用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 ..我必须将信息保存到一个文件中,以相互比较信息..你有替代解决方案吗? –