2011-02-11 102 views
0

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

根文件的变量 NSMutableArray * settingsArray;

应用程序在桌面视图中,并具有一个文本框的详细视图。

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

的问题是,在您保存方法,您是“值”设置值对字典的整个阵列,而不是一个单独的字典。

如果保持特定词典的索引左右,那么你可以这样做:

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

谢谢,这工作。我知道我必须做这样的事情,但不能确定代码。 – 2011-02-12 10:57:03

相关问题