我正在使用具有如下结构的 plist:plist、array、dict key string key string /dict、dict key string key string /dict、/array、/plist。
我想要使用以下代码将当前字典中的“完成”字符串的值设置为“是”。
但是现在,代码用当前字典的字符串替换了整个字典数组(不过,“完成”键的值应该是“是”。)
我想要的正确代码是什么?
在 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 segue 收到的。
TableViewController.m segue 部分:
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 中像这样使用,所以我不能从数组更改为字典,在这种情况下必须制作一个可变副本。