Секционированная таблица - PullRequest
0 голосов
/ 02 июля 2011

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

Так что теперь у меня есть этот код

AArray = [[NSMutableArray alloc] init];
    BArray = [[NSMutableArray alloc] init];
    CArray = [[NSMutableArray alloc] init];
    DArray = [[NSMutableArray alloc] init];
    EArray = [[NSMutableArray alloc] init];
    FArray = [[NSMutableArray alloc] init];
    GArray = [[NSMutableArray alloc] init];
    HArray = [[NSMutableArray alloc] init];
    IArray = [[NSMutableArray alloc] init];
    JArray = [[NSMutableArray alloc] init];
    KArray = [[NSMutableArray alloc] init];
    LArray = [[NSMutableArray alloc] init];
    MArray = [[NSMutableArray alloc] init];
    NArray = [[NSMutableArray alloc] init];
    OArray = [[NSMutableArray alloc] init];
    PArray = [[NSMutableArray alloc] init];
    QArray = [[NSMutableArray alloc] init];
    RArray = [[NSMutableArray alloc] init];
    SArray = [[NSMutableArray alloc] init];
    TArray = [[NSMutableArray alloc] init];
    UArray = [[NSMutableArray alloc] init];
    VArray = [[NSMutableArray alloc] init];
    WArray = [[NSMutableArray alloc] init];
    XArray = [[NSMutableArray alloc] init];
    YArray = [[NSMutableArray alloc] init];
    ZArray = [[NSMutableArray alloc] init];

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

У меня тогда есть этот код:

All = [NSMutableDictionary dictionaryWithObjectsAndKeys:AArray,@"A",BArray,@"B",CArray,@"C",DArray,@"D",EArray,@"E",FArray,@"F",GArray,@"G",HArray,@"H",IArray,@"I",JArray,@"J",KArray,@"K",LArray,@"L",MArray,@"M",NArray,@"N",OArray,@"O",PArray,@"P",QArray,@"Q",RArray,@"R",SArray,@"S",TArray,@"T",UArray,@"U",VArray,@"V",WArray,@"W",XArray,@"X",YArray,@"Y",ZArray,@"Z",nil];
    AllArray = [NSArray alloc];
    AllArray = [AllArray initWithArray:[[All allKeys]sortedArrayUsingSelector:@selector(compare:)]];

и это

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return [AllArray count];
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    NSArray *Array = [All objectForKey:[AllArray objectAtIndex:section]];
    return [Array count];
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    int sectionindex = section;
    return [AllArray objectAtIndex:sectionindex]; 

}

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

Все, что объявлено в файле h, а i @property и @synthesize следующие

@property (nonatomic,retain) NSMutableDictionary *All;
@property (nonatomic,retain) NSArray *AllArray;
@property (nonatomic, retain) UITableView *TableView;

Если бы кто-нибудь мог мне помочь, это было бы действительно здорово!

Спасибо!

Ответы [ 2 ]

1 голос
/ 02 июля 2011

Ваш словарь "Все", похоже, не сохранен.Вы, кажется, назначаете объект словаря непосредственно переменной экземпляра, а не свойству (в этом случае вы бы использовали self.All).

Если ваше приложение вылетает без сообщения, то обязательно включитеКнопка точек останова на панели инструментов Xcode.Это запустит приложение в отладчике, что даст вам более полезную информацию о сбое.Установка NSZombieEnabled на YES также помогает.

0 голосов
/ 02 июля 2011

Взгляните сюда:

Самый простой подход - предоставить селектор сортировки (подробности см. По ссылке):

sortedArray = [anArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
...