2015-11-02 105 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 ..我必須將信息保存到一個文件中,以相互比較信息..你有替代解決方案嗎? –