この単純な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ファイルの書き込みで許可が拒否されたようです。