2012-07-25 10 views
16

Mögliche Duplizieren exsists:
How to check if an NSDictionary or NSMutableDictionary contains a key?für eine elgant Art und Weise der Suche zu überprüfen, ob ein Schlüssel in einem Wörterbuch

ich die ein Array des Schlüssels bekommen (Strings) aus dem Wörterbuch dann wiederhole es durch einen String, vergleiche mit dem Key, nach dem ich suchen möchte und ob das Wörterbuch den gesuchten Schlüssel enthält.

Aber gibt es eine elegantere wollen überprüfen, ob der Schlüssel im Wörterbuch existiert?

 NSArray * keys = [taglistDict allKeys]; 
     for (NSString *key in keys) 
     { 
      // do string compare etc 
     } 

-Code

+0

2014 antwort: http://stackoverflow.com/a/22001925/294884 – Fattie

Antwort

37

Ein NSDictionary kann nicht nil Werte enthalten, so dass Sie einfach [NSDictionary objectForKey:] verwenden können, welche nil zurück, wenn der Schlüssel nicht existiert:

BOOL exists = [taglistDict objectForKey:key] != nil; 

EDIT: Wie @ erwähnt OMGPOP, dies funktioniert auch unter Verwendung von Objective-C-Literalen unter Verwendung der folgenden Syntax:

NSDictionary *dict = @{ @"key1" : @"value1", @"key2" : @"value2" }; 

if (dict[@"key3"]) 
    NSLog(@"Exists"); 
else 
    NSLog(@"Does not exist"); 

Drucke:

Does not exist 
+0

was ist mit modernen objc? wenn ich dict [@ "key"] verwende, stürzt es ab – OMGPOP

+0

@OMGPOP Es funktioniert für mich. – trojanfoe

+0

das funktioniert nicht für mich. gibt Fehler. – Moxarth

-2

die Schlüssel vom Typ Unter der Annahme, NSString und keys ist ein Wörterbuch, dann sollten Sie stattdessen etwas verwenden wie:

if [keys containObject:key] { 
// do something 
} 
9

Trojanfoe wahrscheinlich besser ist, aber man könnte auch tun:

[[taglistDict allKeys]containsObject:key] 
+0

Einfacher Liner! – Shailesh

Verwandte Themen