私は次のような構造のplistを使用しています:plist、array、dictキー文字列キー文字列/ dict、dictキー文字列キー文字列/ dict、/ array、/plist。
次のコードで必要なのは、現在の辞書の「Done」文字列の値を「Yes」に設定することです。
しかし今では、コードは辞書の配列全体を現在の辞書の文字列に置き換えます(ただし、「Done」キーの値は「Yes」になります)。
私が欲しいものの正しいコードは何でしょうか?
DetailViewController.m:
-(IBAction)favoriteButtonPressed:(id)sender
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Object.plist"];
[[detailsDataSource objectAtIndex: detailIndex] setValue:@"Yes" forKey:@"Done"];
[[detailsDataSource objectAtIndex: detailIndex] writeToFile:path atomically:YES];
}
detailsDataSourceとdetailIndexは、それが重要な場合、TableViewController.mセグエから受信されます。
TableViewController.mセグエ部分:
detailViewController.detailsDataSource = [[NSArray alloc]initWithArray:objectsArray];
detailViewController.detailIndex = selectedRowIndex.row;
DetailViewController viewDidLoad
if ([[[detailsDataSource objectAtIndex: detailIndex] valueForKey:@"Favorite"] isEqual:@"Yes"]) {
[favoriteButton setImage:[UIImage imageNamed:@"favoritedItem.png"] forState:UIControlStateSelected | UIControlStateHighlighted];
}
districtLabel.text = [[detailsDataSource objectAtIndex: detailIndex] valueForKey:@"District"];
detailsDataSource配列はdetailViewControllerでこのように使用されるため、配列から辞書に変更することはできません。その場合は、変更可能なコピーを作成する必要があります。