9

があり、NSMutableDictionary値とキーを交換したい。つまり、値がキーになり、それに対応するキーが値になると交換した後、すべてのキーと値は一意です。サイズが非常に大きいため、適切なソリューションを探しています。また、キーと値はNSStringオブジェクトです

4

5 に答える 5

5

辞書を逆にする別の方法を次に示します。私にとって最も簡単です。

NSArray *keys = dictionary.allKeys;
NSArray *values = [dictionary objectsForKeys:keys notFoundMarker:[NSNull null]];
[dictionary removeAllObjects]; // In case of huge data sets release the contents.
NSDictionary *invertedDictionary = [NSDictionary dictionaryWithObjects:keys forKeys:values];
[dictionary setDictionary:invertedDictionary]; // In case you want to use the original dictionary.
于 2013-10-15T20:18:44.267 に答える
-1
for (NSString *key in [myDictionary allKeys]) {
     NSString *value = [responseDataDic objectForKey:key];
     [myDictionary removeObjectForKey:key];
     [myDictionary addObject:key forKey:value];
}

前提: キーなし = 値。

複雑さ: 余分なスペースは必要ありません。一度ループして、すべてのキーと値のペアを置き換えます。

于 2013-10-15T20:06:32.260 に答える
-2
NSArray* allKeys = [theDict allKeys];
NSArray* allValues = [theDict allValues];
NSMutableDictionary* newDict = [NSMutableDictionary dictionaryWithObjects:allKeys forKeys:allValues];
于 2013-10-15T17:57:47.697 に答える