2014-08-28 4 views
0

У меня есть словарь, который содержит эти данные:Как изменить этот NSMutableArray?

(
contact={name="Lion",id="1",photo="simba.png",address="elm street"}, 
    {name="Cat",id="2",photo="halleberry.png",address="attic"}, 
    {name="Bat",id="3",photo="dracule.jpg",address="long way home baby"} 
    ) 

От этого NSDictionary, я захватить только имя и сортируют его по алфавиту. Как это:

(B={"Bat"}, C={"Cat"}, L={"Lion"}) 

Это код, который я использовал:

NSMutableDictionary* sortedDict = [NSMutableDictionary dictionary]; 
for (NSDictionary* animal in dataDict[@"user"]){ 
    NSString* name = animal[@"name"]; 
    if (![name length]) 
     continue; 
    NSRange range = [name rangeOfComposedCharacterSequenceAtIndex:0]; 
    NSString* key = [[name substringWithRange:range] uppercaseString]; 
    NSMutableArray* list = sortedDict[key]; 
    if (!list){ 
     list = [NSMutableArray array]; 
     [sortedDict setObject:list forKey:key]; 
    } 
    [list addObject:name]; 

Тогда, что я хочу спросить. Мне нужно создать массив фотографий, но отсортированный в алфавитном порядке на основе имени. Я имею в виду что-то вроде этого:

(B="dracule.jpg", C="halleberry.png"...etc) 

Я также слышал, что это будет более эффективно использовать (B={name="Bat", photo="draggle.jpg"}), но не знаю, как я могу сделать что-то вроде этого и не знаю, как назвать это отдельно. Пожалуйста, мне нужна ваша помощь: "(

+0

Я не понимаю, данные вы представляете.. Он начинается с '(', который подразумевает массив, и все же имеет ключ 'contact' со значением словаря, но затем есть больше словарей, следующих за ним. Пожалуйста, опишите ваши данные лучше. – trojanfoe

+0

Извините, возможно, я ошибся потому что я его не копирую и вставляю, но оба являются NSDictionary – Edward

+0

Итак, где ключи для 2-го и 3-го элементов верхнего уровня электронный словарь? – trojanfoe

ответ

1

Вы можете легко сортировать массив, содержащий значения словарей см ниже

//Get the contact array. 

NSArray *contacts=[dic objectForKey:@"contact"]; 

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 

NSArray *sortedArray = [contacts sortedArrayUsingDescriptors:@[sortDescriptor]]; 

Я надеюсь, что это помогает

+0

Если я делаю это так, он сортирует только имена, но мне также нужен начальный код для создания индекса @iphonic – Edward

+0

@Edward Вы хотите индексировать отсортированные данные или просто индексировать или индексировать сначала, а затем сортировать индексированные данные? – iphonic

+0

сначала индексирование, а затем сортировка данных. Я хочу сделать что-то вроде [этого] (http://www.appcoda.com/ios-programming-index-list-uitableview/) – Edward

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