如何在NSDictionary中交换键和值?

时间:2015-08-27 07:42:40

标签: objective-c nsdictionary foundation

我想知道如何反转NSDictionary。

我看过像

这样的疯狂代码
NSDictionary *dict = ...;
NSDictionary *swapped  = [NSDictionary dictionaryWithObjects:dict.allKeys forKeys:dict.allValues];

根据文档不安全,因为allValuesallKeys的顺序无法保证。

1 个答案:

答案 0 :(得分:5)

NSDictionary *dict = ...;    
NSMutableDictionary *swapped = [NSMutableDictionary new];
[dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) {
    swapped[value] = key;
}];

请注意,值也应符合NSCopying协议。