일반 테이블 뷰를 단면 테이블 뷰로 변환하려고합니다. 섹션 제목을 해당 섹션의 항목에 대한 첫 번째 문자로 사용하고 싶습니다.다른 배열의 모든 개체의 첫 글자를 가진 배열을 반환하는 방법은 무엇입니까?
NSSortDescriptor *sortDescriptor;
sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"Name"
ascending:YES] autorelease];
NSArray *sortedArray;
NSMutableArray *commonNameArray = [tableDataSource valueForKey:@"Name"];
NSArray *uniquearray;
uniquearray = [[NSSet setWithArray:commonNameArray] allObjects];
sortedArray = [uniquearray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
이 코드는 중복 된 제목을 제거하고 알파벳 순으로 목록을 정렬 :
이것은 내가 지금까지 내 titleForHeaderInSection 방법에있는 것입니다. 이제 배열의 문자열을 첫 번째 문자로 변환하면됩니다. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까?
고마워요! 이것은 내가 아래에서 생각해 낸 해결책보다 조금 더 우아합니다. 방금 추가했습니다 : \t return [uniquearray objectAtIndex : section]; 그것은 매력처럼 작동합니다. – Jonah
우아 할뿐만 아니라 훨씬 더 효율적입니다 ... titleForHeaderInSection에서 this를 수행하면 안됩니다. uniqueArray를 멤버 변수로 유지하고 dealloc에서 릴리스해야합니다. 당신은 정렬 된 모든 이름의 배열을 만들고, 하나의 요소를 선택하고 첫 번째 문자를 얻습니다. 광산은 첫 번째 문자 집합을 만든 다음 정렬 된 버전을 만듭니다. 두 문자 모두 CommonName의 모든 구성원에서 # 문자 대신 36 자 길이를 사용합니다. – groundhog
제안 해 주셔서 감사합니다. 이제 viewDidLoad 메서드에서 고유 한 선언을 배치 한 다음 호출합니다. \t return [arrayOfInitialLetters objectAtIndex : section]; titleForHeaderInSection 메서드의 – Jonah