【问题标题】:Plist NSMutableArray & NSMutableDictionary IssuePlist NSMutableArray & NSMutableDictionary 问题
【发布时间】:2011-02-11 14:42:44
【问题描述】:

我在尝试在我的应用中使用 plist 时遇到问题。我创建了一个自定义的并将其复制到文档文件夹中,以便可以添加值。到目前为止,我已经设置了所有内容,并且所有内容看起来都很好,但是当我编辑一个值并保存它时,所有值似乎都变成了我刚刚保存的那个值。我对这个问题有点疯狂,因为它看起来像是我修复了它,但它一直在失败。我的 plist 格式也是 根 - 数组 项目 0 - 字典 设置 - 字符串 值 - 字符串 第 1 项 - 字典 设置 - 字符串 值 - 字符串 第 1 项 - 字典 设置 - 字符串 值 - 字符串 其他值 - 字符串

根文件的变量 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];
}

【问题讨论】:

    标签: iphone uitableview plist documents


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,成功了。我知道我必须做类似的事情,但不确定代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多