我在尝试在我的应用程序中使用 plist 时遇到问题。我创建了一个自定义的并将其复制到文档文件夹中,以便可以添加值。到目前为止,我已经设置了所有内容,并且所有内容看起来都很好,但是当我编辑一个值并保存它时,所有值似乎都变成了我刚刚保存的那个值。我对这个问题有点疯狂,因为它看起来像是我修复了它,但它一直在失败。我的 plist 格式也是 Root - Array Item 0 - Dictionary Setting - String Value - String Item 1 - Dictionary Setting - String Value - String Item 1 - Dictionary Setting - String Value - String OtherValue - String
根文件 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];
详细视图变量
NSMutableDictionary *settingsDictionary;
NSMutableArray *settingValArray;
在 detailview 视图中将出现方法
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];
}