Ios Cocoa-在NSDictionary中引用密钥

Ios Cocoa-在NSDictionary中引用密钥,ios,json,cocoa,key,nsdictionary,Ios,Json,Cocoa,Key,Nsdictionary,我想引用ket,而不是NSDictionary上包含的内容,如下所示: key { 14819 = { contactDetails = { dictionary = { interests = { Movies = ... if([key isEqualToString:@"1

我想引用ket,而不是NSDictionary上包含的内容,如下所示:

key {
    14819 =     {
        contactDetails =         {
            dictionary =             {
                interests =                 {
                    Movies =   
      ...
if([key isEqualToString:@"14819"]){
 do something
}
NSArray*keys=[dict allKeys];
for(NSString *key in keys) {
    if ([key compare@"14819"] == NSOrderedSame) {
        do something
    }
}
我想做这样的东西:

key {
    14819 =     {
        contactDetails =         {
            dictionary =             {
                interests =                 {
                    Movies =   
      ...
if([key isEqualToString:@"14819"]){
 do something
}
NSArray*keys=[dict allKeys];
for(NSString *key in keys) {
    if ([key compare@"14819"] == NSOrderedSame) {
        do something
    }
}

您能帮助我吗?

您可以使用nsdictionary中的allkeys方法获取密钥数组,然后迭代它进行比较!像这样:

key {
    14819 =     {
        contactDetails =         {
            dictionary =             {
                interests =                 {
                    Movies =   
      ...
if([key isEqualToString:@"14819"]){
 do something
}
NSArray*keys=[dict allKeys];
for(NSString *key in keys) {
    if ([key compare@"14819"] == NSOrderedSame) {
        do something
    }
}

您可以使用nsdictionary中的allkeys方法获取密钥数组,然后迭代它进行比较!像这样:

key {
    14819 =     {
        contactDetails =         {
            dictionary =             {
                interests =                 {
                    Movies =   
      ...
if([key isEqualToString:@"14819"]){
 do something
}
NSArray*keys=[dict allKeys];
for(NSString *key in keys) {
    if ([key compare@"14819"] == NSOrderedSame) {
        do something
    }
}

应该能用所有的钥匙查到。写了一个简单的例子,希望对大家有所帮助

NSMutableDictionary *testDictionary = [[NSMutableDictionary alloc]init];
[testDictionary setObject:@"value" forKey:@"testObject"];

BOOL containsKey = [[testDictionary allKeys] containsObject:@"testObject"];

NSLog(@"testing %d" ,containsKey);

应该能用所有的钥匙查到。写了一个简单的例子,希望对大家有所帮助

NSMutableDictionary *testDictionary = [[NSMutableDictionary alloc]init];
[testDictionary setObject:@"value" forKey:@"testObject"];

BOOL containsKey = [[testDictionary allKeys] containsObject:@"testObject"];

NSLog(@"testing %d" ,containsKey);

如果您只想测试该键是否存在于字典中,请使用
objectForKey:
并测试该对象是否为
nil


获取
所有密钥
并在其中搜索密钥将起作用,但几乎肯定要慢一些。字典是散列表
objectForKey:
使用该事实,而
allKeys
不使用该事实。

如果您只想测试该键是否存在于字典中,请使用
objectForKey:
并测试该对象是否为
nil


获取
所有密钥
并在其中搜索密钥将起作用,但几乎肯定要慢一些。字典是散列表
objectForKey:
使用该事实,而
allKeys
不使用该事实。

或者您可以向数组发送
containsObject:
消息(请参见AJak的答案)。或者您可以向数组发送
containsObject:
消息(请参见AJak的答案)。NSDictionarys的另一个问题是,它来自json响应服务,有时一些字段可能等于,应用程序就会崩溃@法比奥桑托斯:“场”是什么意思?如果字典中存在密钥,并且对象描述为“
”,则这是一个NSNull对象,您可以对此进行测试。NSDictionarys的另一个问题是,它来自json响应服务,有时一些字段可能等于,应用程序会崩溃@法比奥桑托斯:“场”是什么意思?如果该键存在于字典中,且对象描述为“
”,则该对象为NSNull对象,您可以对此进行测试。