Plist NSMutableArray& NSMutableDictionary问题

时间:2011-02-11 14:42:44

标签: iphone uitableview plist documents

我无法在我的应用中尝试使用plist。我创建了一个自定义的,它被复制到文档文件夹,以便可以添加值。我到目前为止设置了一切,一切都显得很好,当我编辑一个值并保存它所有的值似乎改变为我刚刚保存的那个。我对这个问题有点疯狂,因为它接缝像我修复它但它一直在失败。我的plist格式也是 根数组      第0项 - 字典             设置 - 字符串             价值 - 字符串      第1项 - 字典             设置 - 字符串             价值 - 字符串      第1项 - 字典             设置 - 字符串             价值 - 字符串             OtherValue - String

Rootfile的变量 NSMutableArray * settingsArray;

App位于tableview中,并且包含一个带有一个文本框的详细信息视图。

-(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];

Detailview变量

NSMutableDictionary *settingsDictionary;
NSMutableArray *settingValArray;
在detailview viewwillappear方法中

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];
}

1 个答案:

答案 0 :(得分:1)

问题在于,在save方法中,您要针对整个字典数组设置“Value”的值,而不是针对单个字典设置。

如果您保留特定字典的索引,那么您可以执行以下操作:

[[settingValArray objectAtIndex:dictionaryIndex] setValue:valueTextField.text forKey:"Value"];
[settingValArray writeToFile:path atomically:YES];