2013-09-07 4 views
3

저는 아이폰 앱 개발을 배우며 두 단어를 입력하고 결합 할 수있는 작업을하고 있습니다. 두 단어와 결합 된 단어는 사전에 입력 된 다음 변경 가능한 배열에 저장됩니다. 전체 단어를 입력 할 수있는 또 다른 옵션이 있으며 배열에 있으면 단어를 만드는 두 개의 개별 단어가 반환됩니다. 제 문제는 배열을 검색하고 각 객체를 탐색하고 답변을 정렬하는 방법을 모르겠다는 것입니다. 예를 들어 :NSDictionary를 사용하여 NSMutableArray에서 특정 문자열 가져 오기

변경이 용이 한 배열을 검색하고 각 개체의 "결합 워드는"하도록 분석 될 수 있도록 내가 코드를 어떻게
(
    { 
    "Combined Word" = snowman; 
    "Word 1" = snow; 
    "Word 2" = man; 
}, 
    { 
    "Combined Word" = dirtbike; 
    "Word 1" = dirt; 
    "Word 2" = bike; 
}, 
    { 
    "Combined Word" = schoolbus; 
    "Word 1" = school; 
    "Word 2" = bus; 
}, 
    { 
    "Combined Word" = raindrop; 
    "Word 1" = rain; 
    "Word 2" = drop; 
} 

내가 스쿨 버스를 입력하고 버튼을 누르면, 그것은, 입력 한 단어가 값입니다 해당 "단어 1"과 "단어 2"를 반환합니다.

답변

5

나는 더 나은 또는 효율적인 방법이 있는지 여부를 몰라,하지만 난 이런 식으로 뭔가를 시도 할 수 있습니다 :

NSString* word1; 
NSString* word2; 
for(NSDictionary *dict in yourArray){ 
    if([[dict objectForKey:@"Combined Word"] isEqualToString:yourSearchWord]]){ 
     word1 = [dict objectForKey:@"Word 1"]; 
     word2 = [dict objectForKey:@"Word 2"]; 
    } 
} 

이 오타이며, 엑스 코드에서 확인하지 않았 음을 유의하시기 바랍니다. 이 당신을 도울 것입니다

+0

+1; 이것은 나에게 합리적으로 보입니다. –

+0

'word1'과'word2'를'nil'으로 초기화해야합니다. 단지 배열의 결합 된 단어와 일치하는 것이 없기 때문입니다. – rmaddy

+2

또 다른 최적화는'if' 안에'break;'를 추가하는 것입니다. 매치가 발견되면 배열의 나머지 부분을 검사 할 필요가 없습니다. – rmaddy

2

사용 NSPredicate

NSString *value= @"value1"; 
NSPredicate *key1Predicate = [NSPredicate predicateWithFormat:@"%@ IN [email protected]", value]; 
NSArray *filteretSet1 = [dataSet filteredArrayUsingPredicate:key1Predicate]; 
NSLog(@"filteretSet1: %@",filteretSet1); 

희망.

관련 문제