2015-04-20 3 views
2

У меня есть NSMutableArray названные животные. Мне нужно создать NSMutableDictionary так, чтобы все имена в массиве животных имели Keys, которые начинаются с определенной первой буквы = Values.NSMutableDictionary setValue:/forKey :?

Это животные массив:

NSMutableArray *animals = [NSMutableArray arrayWithObjects:@"Bear", @"Black Swan", @"Buffalo", @"Camel", @"Cockatoo", @"Dog", @"Donkey", @"Emu", @"Giraffe", @"Greater Rhea", @"Hippopotamus", @"Horse", @"Koala", @"Lion", @"Llama", @"Manatus", @"Meerkat", @"Panda", @"Peacock", @"Pig", @"Platypus", @"Polar Bear", @"Rhinoceros", @"Seagull", @"Tasmania Devil", @"Whale", @"Whale Shark", @"Wombat", nil]; 

это мой код, чтобы установить его в MutableDictionary:

for(NSString *str in animals) { 
    NSString *firstLetter = [str substringToIndex:1]; 
    NSArray *newArr = [NSArray arrayWithObject:str]; 
    [myMutableDictionary setValue:newArr forKey:firstLetter]; 
} 

Проблема заключается в том, что для каждого ключа устанавливается только одно значение, но мне нужно все объекты имеют первую букву с одинаковым значением. Например. value = 'b' -> @ "Bear", @ "Black Swan", @ "Buffalo".

+1

Просто, чтобы быть ясным ... Вам просто нужны имена, сгруппированные по их первой букве, или вам нужно их первое письмо для чего-то вроде индексации в виде таблицы? – Alladinian

+1

Для стартеров [NSDictionary setValue: forKey] не работает, как вы думаете. Просмотрите документы по этому поводу. Он установит значение только для одного ключа, соответствующего точно этому значению. Вам нужно будет использовать что-то вроде NSPredicate, чтобы найти все соответствующие значения и получить массив подмножества, который вы можете скопировать в NSDictionary. –

+0

@ Alladinian как индексирование в tableview – Sattar

ответ

6

Попробуйте

for (NSString *str in animals) { 
    NSString *firstLetter = [str substringToIndex:1]; 
    if(!myMutableDictionary[firstLetter]) 
    { 
     myMutableDictionary[firstLetter] = [NSMutableArray new]; 
    } 
    NSMutableArray *arr = myMutableDictionary[firstLetter]; 
    [arr addObject:str]; 
} 
+0

Спасибо. отлично работая, можете ли вы объяснить, как именно его работа? – Sattar

0

Вот код, который удовлетворяет вашим требованиям.

Шаг 1: Выделить NSMutableDictionary.

Этап 2: При разборе NSArray, проверьте, есть ли ключ в dictionary или что. если доступно, то этот массив из того же ключа и добавьте новый элемент в array и обновите same key в dictionary. если они недоступны, тогда создайте new key в dictionary. вот код.

+0

Сообщите мне, если у вас есть какие-либо проблемы. –

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