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

时间:2010-08-13 10:18:14

标签: iphone objective-c

有没有办法根据NSDictionary的值获取NSDictionary的键值?我可以通过几种方式获得基于密钥的值,但我需要得到密钥。

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

NSDictionary *question = [NSDictionary dictionaryWithObjectsAndKeys:  
                @"QuestionType", @"0",
                @"Answer", @"1",
                nil];

1 个答案:

答案 0 :(得分:6)

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

在你的例子中:

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

顺便说一下,您的密钥(@"0"@"1")是NSString是否有任何特殊原因?您可以使用支持NSCopying的任何对象作为键,因此NSNumber可能是更好的选择。