2013-09-07 2 views
3

Я изучаю разработку приложений iphone и работаю над чем-то, что позволяет вводить два слова и их сочетать. Два слова и комбинированное слово вводятся в словарь и затем сохраняются в изменяемом массиве. Существует еще один вариант, который позволяет вводить целое слово, и если он находится в массиве, он вернет два отдельных слова, которые его делают. Моя проблема в том, что я не знаю, как искать массив и проходить через каждый объект и разбирать ответ. Например:Получить определенную строку из NSMutableArray, используя NSDictionary

(
    { 
    "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; 
} 

вхожу Schoolbus и нажмите на кнопку, как я код так, что изменчивый массив ищется и каждый объект в «Combined Слово» анализируется так, что это введенное слово имеет значение, то вернет соответствующие слова «Слово 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"]; 
    } 
} 

Пожалуйста, обратите внимание, что это опечатка и не проверяли в XCode.

+0

+1; это выглядит разумным для меня. –

+0

Вы должны инициализировать слова 'word1' и' word2' '' nil' только для того, чтобы совпадение совпадающего слова в массиве не соответствовало. – rmaddy

+2

Другой оптимизацией было бы добавить 'break;' внутри 'if'. Не нужно проверять остальную часть массива после того, как найдена совпадение. – rmaddy

2

Использование NSPredicate

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

Надеюсь, что это поможет.

Смежные вопросы