我有一个 NSMutableDictionary,我想将元素的值更改为它。
//My dictionary:
{
objectId = 8ED998yWd1;
cardInfo = {
state = published; //THIS!
price = 40;
color = red;
}
};
我尝试了几种方法,但值没有改变,像这样:
[dictionary setObject:@"reserved" forKey:@"state"]; //nope
或者这个:
[dictionary setValue:@"reserved" forKeyPath:@"cardInfo.state"]; //nope
或者:
[[dictionary objectForKey:@"cardInfo"] setObject:@"reserved" forKey:@"state"]; //no
还有这个:
[dictionary setObject:@"reserved" forKey:[[dictionary objectForKey:@"cardInfo"] objectForKey:@"state"]];
如何将对象“状态”从“已发布”更改为“保留”?
谢谢!
最佳答案
假设 dictionary
和 cardInfo
都是 NSDictionary
实例:
您可以获取嵌套字典的可变副本,修改适当的值,然后将修改后的字典写回到“顶级”字典中,如下所示:
NSMutableDictionary *mutableDict = [dictionary mutableCopy];
NSMutableDictionary *innerDict = [dictionary[@"cardInfo"] mutableCopy];
innerDict[@"state"] = @"reserved";
mutableDict[@"cardInfo"] = innerDict;
dictionary = [mutableDict copy];
我猜你可以把它压缩成一行,但这将是一条难看的线。
编辑:
如果外部和内部字典都已经可变
,那么当然会稍微简化事情:
NSMutableDictionary *innerDict = dictionary[@"cardInfo"];
innerDict[@"state"] = @"reserved";
dictionary[@"cardInfo"] = innerDict;
关于ios - 更改嵌套 NSMutableDictionary 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33425735/