この単純なjsonファイルがiphone/ipadプロジェクトにあります。
{"initial_page" : Page_Selected}
Page_SelectedはNSInteger
UIPickerViewの値を使用して変更したい"initial_page"。どうやってするか?
もちろん、私はすでにUiPickerWiew選択部分を実行しました。jsonの変更については、
-(void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponents:(NSInteger)component{ }
働き。
たぶん、その仕事をする関数はそうです[[jsonParsed setInteger:row forKey:@"initial_page"]が、このように、デバッガーは「認識されないセレクターが送信されました」という例外を返します。
キーとしてjsonパラメータを変更する部分だけが必要です。"initial_page"
誰かが私を助けることができますか?
それが私が得たものです。
NSError *jsonParsingError = nil;
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Config" ofType:@"json"];
NSMutableDictionary *configJson = [NSJSONSerialization
JSONObjectWithData:[NSData dataWithContentsOfFile:filePath]
options:NSJSONReadingMutableContainers error:&jsonParsingError];
[configJson setValue:[NSNumber numberWithInt:row] forKey:@"initial_page"];
NSLog(@"%@",jsonParsingError);
最後の行は私(null)を返すので、jsonファイルは問題ありません。
しかし、印刷する[configJson objectForKey:@"inital_page"]と変化が見られます...では、永続化するための「コミット」または「保存」コマンドのようなものはありますか?
次の提案:
NSData * modified = [NSJSONSerialization dataWithJSONObject:configJson options:NSJSONWritingPrettyPrinted error:&jsonParsingError];
[modified writeToFile:filePath options:NSDataWritingAtomic error:&jsonParsingError];
NSLog(@"returned error: %@", [jsonParsingError localizedDescription]);
繰り返しますが、最後の行は私を返します(null)が、ファイルに変更が見つかりません
変更後、の変更を保存できますが、initial_pageこれiPhone/iPad Simulatorは実際のデバイスのデバッグでは機能せず、機能しません。
これが私がすることです:
if([modified wirteToFile:filePath options:NSDataWritingFileProtectionNone error:&jsonParsingError])
NSLog(@"writing ok")
else
NSLog(@"not ok with error :%@",jsonParsinError);
Iphone simulator最後の4行には問題はありませんが、物理的に実行すると、最後の行iPhoneは次のようになりNSLogます。
"not ok with error : Error Domain=NSCocoaErrorDomain Code=513 The Operation Could not be completed. Operation not permitted"
jsonファイルの書き込みで許可が拒否されたようです。