2011-12-30 2 views
5

핵심 데이터로 채워진 테이블을 구현했는데 이제 형식과 같은 연락처에 사이드 알파벳을 표시하여 섹션으로 인덱싱하려고합니다.코어 데이터의 섹션 인덱스에 대한 전체 알파벳

아래 코드에서 주석 처리 된 행을 사용하면 기존 섹션의 문자 만 사용할 수 있습니다. 하지만 전체 알파벳이 필요하므로 반환 된 배열을 변경했습니다.

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView 
{  
    //return [fetchedResultsController sectionIndexTitles];  

    indexArray = [NSArray arrayWithObjects: @"{search}", @"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", @"J",@"K", @"L", @"M", @"N", @"O", @"P", @"Q", @"R", @"S", @"T", @"U", @"V", @"W", @"X", @"Y", @"Z", @"#", nil]; 
    return indexArray; 
} 

모든 문자가 측면 인덱스에 표시됩니다. 하지만 지금은 선택한 섹션의 인덱스를 반환하는 방법을 구현했으며, 여기에 내가 몇 가지 문제했습니다 : 위의 코드와

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index 
{ 
    //return [fetchedResultsController sectionForSectionIndexTitle:title atIndex:index]; 

    NSString *correspondingLetter = [indexArray objectAtIndex:index]; 
    NSUInteger correspondingIndex = [[fetchedResultsController sections] indexOfObject:correspondingLetter]; 

    NSLog(@"------index:%i\ncorrespondingLetter: %@\ncorrespondingIndex: %i\n", index,correspondingLetter, correspondingIndex); 

    return correspondingIndex; 
} 

를 내가 주석 라인을 사용하는 경우, 내가 오류 각이 나는 해당 부분이없는 편지를 선택한다. 그래서 제가하려고하는 것은 선택된 문자를 사용하여 섹션 색인을 검색하고 기존 섹션으로 위치를 검색하는 것입니다. 그러나 그것은 효과가 없습니다. 아이디어가 있으십니까? 사전에

감사합니다, 얏사

답변

5

당신은 fetchedResultController

@property (nonatomic, readonly) NSArray *sectionIndexTitles 

에서 검색합니다. 당신이 NSNotFound을받을 것이다 존재하지 않고 이전의 문자 인덱스, 또는 이전하거나 이전을 반환하는 몇 가지 논리를 수행해야합니다 인덱스 등

+1

믿을 수없는, 그것은 내 앞에 있었고 나는 그것을 보지 못했습니다 !! :) 제안한대로 다음을 수행하는 것으로 충분했습니다.'correspondingIndex = [[fetchedResultsController sectionIndexTitles] indexOfObject : correspondingLetter];'. 대단히 감사합니다! – yassassin

2

추가 언어를 지원하기를 만약
하지만, 하드 코딩 된 문자는 사용하지 않습니다. 내 솔루션은 수락 된 답변에서 영감을 받았습니다.

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView 
{ 
    return [[UILocalizedIndexedCollation currentCollation] sectionIndexTitles]; 
} 


- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index 
{ 
    NSString *correspondingLetter = [[[UILocalizedIndexedCollation currentCollation] sectionIndexTitles] objectAtIndex:index]; 
    return [[self.fetchedResultsController sectionIndexTitles] indexOfObject:correspondingLetter]; 
} 
관련 문제