Самое близкое к тому, что вы ищете, я считаю allKeysForObject:
. Это возвращает NSArray, содержащий ключи, соответствующие всем вхождениям данного объекта в словаре. Очевидно, что если объект находится в словаре только один раз, NSArray будет содержать только один объект.
Итак, с вашим примером:
fieldMap = [[NSDictionary alloc] initWithObjectsAndKeys:
@"c0",@"synckey",
@"c1",@"wi_id",
@"c2",@"wi_parent_id",
@"c3",@"wi_type",
@"c4",@"wi_rh_task",
@"c5",@"decision_key",
@"c6",@"wi_stat",
@"c7",@"wi_prio",
@"c8",@"wi_cd",
@"c9",@"wi_ct",
@"cb",@"wi_dh_stat",
@"cc",@"wi_user",
nil];
Этот дополнительный код вернул бы массив, содержащий 1 строковый объект, имеющий значение @ "c7":
NSArray *keyArray = [fieldMap allKeysForObject:@"wi_prio"];
[В сторону: обратите внимание, что это будет работать только из-за того, как работает компилятор; он принимает все вхождения @ "wi_prio" и делает их одним и тем же объектом. Если вместо этого вы, возможно, загрузили словарь с диска и т. Д., Этот подход не будет работать для строк NSStrings. Вместо этого вам, вероятно, следует использовать allKeys
, а затем выполнить итерацию по ним, сравнивая с [mystring isEqualToString:anotherString]
.]