我需要检查字典是否有钥匙。如何?


当前回答

swift 4.2解决方案

所以,如果你只想回答这个问题,字典是否包含键,问:

let keyExists = dict[key] != nil

如果你想要这个值,并且你知道字典中包含这个键,那么说:

let val = dict[key]!

但如果,就像通常发生的那样,你不知道它包含键-你想获取它并使用它,但前提是它存在-然后使用类似if let的东西:

if let val = dict[key] {
    // now val is not nil and the Optional has been unwrapped, so use it
}

其他回答

if ([MyDictionary objectForKey:MyKey]) {
      // "Key Exist"
} 

一个非常严重的问题,浪费了我调试的时间-你可能会发现自动完成提示你尝试使用doesContain,这似乎是有效的。

除此之外,doesContain使用id比较而不是objectForKey使用的散列比较,所以如果你有一个字符串键的字典,它将返回NO给doesContain。

NSMutableDictionary* keysByName = [[NSMutableDictionary alloc] init];
keysByName[@"fred"] = @1;
NSString* test = @"fred";

if ([keysByName objectForKey:test] != nil)
    NSLog(@"\nit works for key lookups");  // OK
else
    NSLog(@"\nsod it");

if (keysByName[test] != nil)
    NSLog(@"\nit works for key lookups using indexed syntax");  // OK
else
    NSLog(@"\nsod it");

if ([keysByName doesContain:@"fred"])
    NSLog(@"\n doesContain works literally");
else
    NSLog(@"\nsod it");  // this one fails because of id comparison used by doesContain

使用Swift,它将是:

if myDic[KEY] != nil {
    // key exists
}

在NSDictionary中检查key是否存在:

if([dictionary objectForKey:@"Replace your key here"] != nil)
    NSLog(@"Key Exists");
else
    NSLog(@"Key not Exists");

如果键不存在,objectForKey将返回nil。