ObjC:NSDictionary allKeysForObject*包含*(这可能吗?)

Chr*_*Cox 1 objective-c nsdictionary

我是Objective-C的新手,遇到了NSDictionary方法 allKeysForObject:.似乎非常有用.但是,我有一个NSDictionary,它有几个NSArrays(全长为2),并且由NSStrings键入.基本上,键是项,数组定义它们的两个属性.如果我想拉出所有具有某种属性的项目名称,可以用类似的东西来完成allKeysForObject,或者我应该只是循环遍历字典并生成一个可变数组(似乎效率低下).

我将包含一个代码片段,但我觉得这个问题很有概念,代码不会真正澄清任何内容.哦,到底是怎么回事.这是一些简化的代码:

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSArray arrayWithObjects:[NSNumber numberWithInt:1],[NSNumber numberWithInt:2],nil],@"Car",[NSArray arrayWithObjects:[NSNumber numberWithInt:2],[NSNumber numberWithInt:3],nil],@"Boat",nil];
NSLog(@"%@",[dict allKeysForObject:???]); // this is the line I am not at all sure about.
Run Code Online (Sandbox Code Playgroud)

编辑:谢谢你到目前为止的回复.不过,我不清楚我的问题.我正在寻找一种更通用的方法.我不想检索特定对象的所有键[1,2],但是我想在字典中查找包括NSNumber 1在内的所有数组并返回这些键.所以,如果我添加@"Plane",[NSArray arrayWithObjects:[NSNumber numberWithInt:1],[NSNumber numberWithInt:3],nil],我想以某种方式查询NSNumber 1并获取@"Car"@"Plane".我感觉这不是这个方法的目的.

Kae*_*ure 5

你在找-keysOfEntriesPassingTest:......

NSArray * selectedKeys = [dict keysOfEntriesPassingTest:^(id key, id obj, BOOL *stop)
                          {
                              return [obj containsObject:[NSNumber numberWithInt:2]];
                          }];
Run Code Online (Sandbox Code Playgroud)