我在一个数组中有几个字典(NSDictionary)(NSMutableArray)。
所有词典都具有相同的键但值不同。
示例:
({
Price = 100;
Quantity = 3;
},
{
Price = 200;
Quantity = 5;
})
有没有办法在不使用for循环的情况下一次更新所有词典中特定键的值。
也就是说,有没有办法一次性为数组中的所有字典设置Quantity = 0?
编辑:我正在寻找性能,因为我有大量的词典,而且我假设可能有更快的方法来执行此操作而不是使用for循环。
答案 0 :(得分:1)
在这种情况下,enumerateObjectsUsingBlock
是您的朋友。
[dictionaryArray enumerateObjectsUsingBlock:^(NSDictionary *dict, NSUInteger idx, BOOL *stop) {
}];
但是,循环浏览字典时,enumerateObjectsUsingBlock
的性能要好得多。
这是对objective-c中循环性能的一个很好的分析: http://iosdevelopertips.com/objective-c/high-performance-collection-looping-objective-c.html
答案 1 :(得分:1)
假设字典是可变的,您可以[array setValue:@0 forKey:@"Quantity"];
。这是使用键值编码-setValue:forKey:
方法。通常情况下,这只会设置接收器的属性,但对于NSArray
,它会记录在每个元素上执行该方法:
使用指定的值和键在每个数组项上调用setValue:forKey:。
请注意,任何人都可以提供的任何技术都将使用循环引擎。你唯一能做的就是让框架为你做循环。