Преобразование табличного представления в разделы - PullRequest
5 голосов
/ 31 января 2011

У меня есть табличное представление, у которого есть источник данных из массива, содержащего имена людей.

Теперь, чтобы упростить поиск людей, я хочу разбить табличное представление так, чтобы оно было справа от буквы A-Z, как в приложении Адресная книга.

Но мой текущий массив просто содержит коллекцию NSStrings. Как мне разделить их так, чтобы они были сгруппированы по первой букве имени? Есть ли удобный способ сделать это?

РЕДАКТИРОВАТЬ: Если кто-то заинтересован в моем окончательный код:

NSMutableArray *arrayChars = [[NSMutableArray alloc] init];

for (char i = 'A'; i <= 'Z' ; i++) {
    NSMutableDictionary *characterDict = [[NSMutableDictionary alloc]init];
    NSMutableArray *tempArray = [[NSMutableArray alloc] init];

    for (int k = 0; k < [myList count]; k++) {

        NSString *currentName = [[friends objectAtIndex:k] objectForKey:@"name"];
        char heading = [currentName characterAtIndex:0];
        heading = toupper(heading);

        if (heading == i) {
            [tempArray addObject:[friends objectAtIndex:k]];
        }
    }
    [characterDict setObject:tempArray forKey:@"rowValues"];
    [characterDict setObject:[NSString stringWithFormat:@"%c",i] forKey:@"headerTitle"];
    [arrayChars addObject:characterDict];

    [characterDict release];
    [tempArray release];
}

В конце функции у меня будет:

arrayChars [0] = dictionary(headerTitle = 'A', rowValues = {"adam", "alice", etc})
arrayChars[1] = dictionary(headerTitle = 'B', rowValues = {"Bob", etc})

Спасибо всем за помощь!

1 Ответ

2 голосов
/ 11 июня 2013

Вы можете использовать словарь для их сортировки, поэтому создайте массив со всеми буквами, которые вы хотите отсортировать, и массив с nil-объектами, чтобы инициализировать словарьЕсли слово и положить это слово в соответствующий ключ в словаре

for (NSString *name in names) {
    NSString *firstLetter = [name substringToIndex:1];

    for (NSString *letter in letters) {
        if ([firstLetter isEqualToString:letter]) {
            NSMutableArray *currentObjects = [dictionary objectForKey:letter];
            [currentObjects addObject:name];
        }
    }

}

Для проверки вы можете напечатать словарь непосредственно

NSLog(@"%@", dictionary);

Тогда ваша работа, чтобы заполнить ваши разделы впросмотр таблицы с использованием словаря

...