2012-10-26 3 views

답변

17

가장 간단한 방법입니다.

편집 : 브래들리의 대답에 대해 언급하는 대답

당신은 더 질문 :

경우 확인하는 방법이 있나요이 : [[[contactDetailsDictionary objectForKey : "전문가"] objectForKey @ @ "CurrentJob"] objectForKey : @ "역할"] 존재합니까? 하나의 키가 아니라 정말 거대한 사전이기 때문에 다른 카테고리에 존재할 수 있습니다. 그냥 쓰기보다 오브젝티브 C에서

당신은 그래서 간단한 방법을 확장, 그것은 오류가 아닙니다 및 nil를 반환 nil에 메시지를 보낼 수 있습니다

[[[contactDetailsDictionary objectForKey:@"professional"] 
           objectForKey:@"CurrentJob"] 
           objectForKey:@"Role"] != nil 

을의 어떤 부분처럼 좌변을 존재하지 않는 키 순서를 확인하는 방법이 있나요

+1

연결 조회의 경우 KVC :'[contactDetailsDictionary valueForKeyPath : @ "professional.CurrentJob.Role"]'을 사용할 수도 있습니다. –

+0

첫 번째 코드 줄에 작은 오타가 있습니다. 메서드 이름은'objectForkey'가 아니라'objectForKey'입니다. – jamix

+0

@jamix - 고마워요. – CRD

6

NSDictionary은 모든 키를 NSArray으로 반환 한 다음 배열에 containsObject을 사용합니다. 사전이 존재하지 않는 키에 대한 nil을 반환

[dictionary objectForKey:@"key"] != nil 

로 (당신은 그러므로 그것을 위해 당신이 NSNull을 사용하여, 사전에 전무를 저장할 수 없습니다) :

NSDictionary* dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"object", @"key"]; 
if ([[dictionary allKeys] containsObject:@"key"]) { 
    NSLog(@"'key' exists."); 
} 
+0

nil을 반환하는 경우이 : [[[contactDetailsDictionary objectForKey :] "전문"objectForKey @ : objectForKey] "CurrentJob"@ @ "역할"] ] 가 존재합니까? 하나의 키가 아니라 정말 거대한 사전이기 때문에 다른 카테고리에 존재할 수 있습니다. –

+0

'NSDictionary'를 반환하는 메소드를 'dictionary'로 대체하십시오. –

+0

메서드가 동일한 것을 반환하면 그 작업을 수행 할 필요가 무엇입니까? 어쩌면 그건 멍청한 질문 일지 모르지만 프런트 엔드에서 왔고 목표 C가 나를 천천히 죽이고 있습니다. P –

관련 문제