アプリでplistを操作しようとして問題が発生しています。カスタムを作成し、値を追加できるようにドキュメントフォルダにコピーしています。これまでにすべてを設定しましたが、値を編集して保存すると、すべての値が保存したものに変更されたように見えます。私はこの問題を修正するように継ぎ目がありますが、失敗し続けるので、この問題に少し夢中になります。また、私のplist形式はRoot-配列項目0-辞書設定-文字列値-文字列項目1-辞書設定-文字列値-文字列項目1-辞書設定-文字列値-文字列OtherValue-文字列
ルートファイルの変数NSMutableArray*settingsArray;
アプリはテーブルビューにあり、1つのテキストボックスを含む詳細ビューがあります。
-(void)viewdidload{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"settings.plist"];
NSMutableArray *tmpArray = [[NSMutableArray alloc] initWithContentsOfFile:path];
self.settingsArray = tmpArray;
[tmpArray release];
}
cellForRowAtIndexPathメソッド内
// Configure the cell.
cell.textLabel.text = [[self.settingsArray objectAtIndex:indexPath.row] objectForKey:@"Setting"];
return cell;
didselectrowatindexメソッドの内部
drinkDetailViewController.settingsDictionary = [self.settingsArray objectAtIndex:indexPath.row];
詳細ビュー変数
NSMutableDictionary *settingsDictionary;
NSMutableArray *settingValArray;
詳細ビュービューに表示されるメソッド
settingNamelabel.text = [settingsDictionary objectForKey:@"Setting"];
valueTextField.text = [settingsDictionary objectForKey:@"Value"];
これが保存方法です
- (IBAction) save: (id) sender {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"settings.plist"];
NSMutableArray *tmpArray = [[NSMutableArray alloc] initWithContentsOfFile:path];
self.settingValArray = tmpArray;
[settingValArray setValue:valueTextField.text forKey:"Value"];
[settingValArray writeToFile:path atomically:YES];
}