替换 iPhone 中 NSDictionary 中的值

Posted

技术标签:

【中文标题】替换 iPhone 中 NSDictionary 中的值【英文标题】:Replace a value in NSDictionary in iPhone 【发布时间】:2010-12-21 16:14:39 【问题描述】:

我有一个 NSDictionary "item" 的数组 (dataArray)。它有 5 名学生的关键“姓名”和关键“标记”等的“大卫”数据和“85”等数据。我想将 david 的标记替换为相对于数组索引值的 90(即包含 david 和 85 的字典的 0)。我该怎么做?

数组内容的代码是

[item setobject:name forkey:@"Name"];
[item setobject:mark forkey:@"Marks"];
[dataArray addOject:item]

上面的代码在解析中,所以我有 5 个对象(学生)的数组,他们的名字和标记,现在我想替换 dataArray 中第一个对象的标记。

【问题讨论】:

【参考方案1】:

您可以这样做:

NSMutableDictionary *newDict = [[NSMutableDictionary alloc] init];
NSDictionary *oldDict = (NSDictionary *)[dataArray objectAtIndex:0];
[newDict addEntriesFromDictionary:oldDict];
[newDict setObject:@"Don" forKey:@"Name"];
[dataArray replaceObjectAtIndex:0 withObject:newDict];
[newDict release];

希望这会有所帮助!

【讨论】:

将 objectForIndex 更改为 objectAtIndex。谢谢【参考方案2】:

你首先需要一个 NSMutableDictionary ,你可以改变它的键和值。

应该是这样的:

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"david", @"name", "85", @"marks", nil];

[dict setObject:@"90" forKey:@"david"];

【讨论】:

我以大卫为例,我在解析后得到这些值,那么如何将该值作为静态值? 这是一个简单而更好的答案【参考方案3】:
 // NSDictionary *dict = ...
    NSMutableDictionary *mutableDict = [dict mutableCopy];
    [mutableDict setObject:@"myObject" forKey:@"myKey"];
    dict = [mutableDict mutableCopy];

希望对你有帮助

【讨论】:

【参考方案4】:

如果你想更新 NSDictionary 中的对象,你应该改用 NSMutableDictionary。 NSMutableDictionary 有以下 EXTRA 方法

添加条目

setObject:forKey: setValue:forKey: addEntriesFromDictionary: 设置字典:

删除条目

removeObjectForKey: 删除所有对象 removeObjectsForKeys:

【讨论】:

【参考方案5】:
[davidsRecord setObject:@"100" forkey:@"mark"];

【讨论】:

以上是关于替换 iPhone 中 NSDictionary 中的值的主要内容,如果未能解决你的问题,请参考以下文章

NSDictionary 可以与 iPhone 上的 TableView 一起使用吗?

替换嵌套 NSDictionary 中出现的 NSNull

使用 GameKit 通过 NSDictionary 在 iPhone 之间传输 CoreData 数据

iPhone内存泄漏问题?

将 nil 对象插入 NSDictionary

NSDictionary 到 JSON 与 NSJSONSerialization 问题