你能从一个值获得一个NSDictionary密钥吗?

Cra*_*gly 2 iphone objective-c

有没有办法从NSDictionary中获取基于其值的键值?我可以通过几种方式获得基于密钥的值,但我需要获得密钥.

使用下面的示例如果我的值是QuestionType,我将如何获得密钥?

NSDictionary *question = [NSDictionary dictionaryWithObjectsAndKeys:  
                @"QuestionType", @"0",
                @"Answer", @"1",
                nil];
Run Code Online (Sandbox Code Playgroud)

Dav*_*vid 6

你可以用-[NSDictionary allKeysForObject:].它返回一个NSArray键,因为任何给定对象都可能有多个键.

在你的例子中:

NSDictionary *question = [NSDictionary dictionaryWithObjectsAndKeys:  
                @"QuestionType", @"0",
                @"Answer", @"1",
                nil];
for (NSString *key in [question allKeysForObject:@"QuestionType"]) {
    NSLog(@"Key: %@", key);
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,你的钥匙(@"0"@"1")是NSString什么有什么特别的原因吗?您可以使用任何支持的对象NSCopying作为键,因此NSNumber可能是更好的选择.