2010-02-03 111 views
76

我只需要問一下如下。 假設我有一本字典。現在NSDictionary - 需要檢查字典是否包含鍵值對

NSMutableDictionary *xyz=[[NSMutableDictionary alloc] init]; 
[xyz setValue:@"sagar" forKey:@"s"]; 
[xyz setValue:@"amit" forKey:@"a"]; 
[xyz setValue:@"nirav" forKey:@"n"]; 
[xyz setValue:@"abhishek" forKey:@"a"]; 
[xyz setValue:@"xrox" forKey:@"x"]; 

,我需要檢查如下

[XYZ不包含密鑰 「b」 值?對還是不?

問題是如何?

另一個問題是如何計算總鍵值對?

比方說NSInteger mCount=[xyz keyCounts];

回答

167

只是要求它爲objectForKey:@"b"。如果它返回nil,則該對象不設置任何對象。

if ([xyz objectForKey:@"b"]) { 
    NSLog(@"There's an object set for key @\"b\"!"); 
} else { 
    NSLog(@"No object set for key @\"b\""); 
} 

編輯:關於你提到的第二個編輯的問題,它只是NSUInteger mCount = [xyz count];。這兩個答案在NSDictionary類參考文獻([1][2])中記錄良好且很容易找到。

+0

+1事實上,文檔直上這樣說:http://developer.apple.com/mac/library/documentation/Cocoa/Reference/基金會/類/ NSDictionary_Class/Reference/Reference.html#// apple_ref/doc/uid/20000140-CBHCDIDJ – 2010-02-03 17:21:57

+4

如果密鑰存在於字典中並且其值爲0會怎麼樣?我們是不是會誤認爲字典中根本沒有關鍵字? – jbx72487 2013-02-01 18:51:59

+9

@ jbx72487字典必須包含對象; 'objectForKey:'返回一個'id' - 一個指向Objective-C對象的指針。如果你正在存儲數字,他們必須[[盒裝]](http://clang.llvm.org/docs/ObjectiveCLiterals.html)到[NSNumber](https://developer.apple.com/library/ios /#documentation/Cocoa/Reference/Foundation/Classes/NSNumber_Class/Reference/Reference.html)。即使NSNumber爲零或錯誤,它仍然是一個有效的指針,上面的代碼將準確地檢測到存在。 – 2013-02-01 19:45:14

0

用文字語法,您可以檢查如下

static const NSString* kKeyToCheck = @"yourKey" 
if (xyz[kKeyToCheck]) 
    NSLog(@"Key: %@, has Value: %@", kKeyToCheck, xyz[kKeyToCheck]); 
else 
NSLog(@"Key pair do not exits for key: %@", kKeyToCheck); 
相關問題