2010-01-14 6 views
3

NSFetchRequest를 사용하여 항목을 가져 오는데, 인기 항목 또는 임의 항목으로 정렬 할 수 있습니다.CoreData를 임의로 정렬하는 방법

가이드에 따라 NSSortDescriptor를 사용하여 쉽게 항목별로 정렬 할 수있었습니다.

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"popularity" ascending:NO]; 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
    [request setSortDescriptors:sortDescriptors]; 

어떻게 임의로 정렬합니까?

답변

5

있습니까?

NSFetchedResultsController을 통해 얻은 결과의 표시를 무작위로 바꾸려면 컨트롤러에서 가져온 결과 (-objectAtIndexPath:)의 요소에 대한 indexPath 참조를 기반으로 테이블보기를 채우는 것을 기억하십시오.

그래서 할 수있는 일은 색인 경로를 순차 색인 경로에 매핑하는 방법을 작성하여 색인 경로의 NSMutableArray (또는 배열)을 섞는 것입니다. 이 메소드는 인덱스 경로를 입력으로 가져 와서 배열을 조회하고 새 색인 경로를 출력으로 내 보냅니다. 이 새 색인 경로를 사용하여 테이블보기를 채 웁니다.

또는 엔티티에 randomizerTag 속성을 추가 할 수 있습니다. 모든 순열 함수를 사용하여 정수의 순열을 생성하고 해당 수를 상점의 각 레코드에 저장하십시오. 저장되면 레코드의 값인 randomizerTag을 정렬하는 정렬 설명자를 다시 적용하여 다시 가져올 수 있습니다.

+0

하하 "임의의 정렬"모순 소리. 그러나 참으로, 내가 원하는 것은 정말로 무작위적인 정렬입니다. 제안 1은하는 것처럼 들립니다. 하지만 인덱스 경로를 fetchedResults에 매핑 할 때 tableview에서 이상한 동작이 발생했습니다. 나는 어쨌든 시도 할 것이다. 제안 2는 해킹입니다. 내 엔티티 속성을 건드리지 않으려 고합니다. 그러나 다른 모든 것이 실패한다면, 나는 이것을 시도 할 것입니다. – samwize

2

무작위화된 속성을 가진 개체를 만든 다음 그 개체를 정렬해야한다고 생각합니다.

+0

랜덤 화 된 속성을 만드는 방법에 대한 가이드가 있습니까? 이것은 임의의 숫자를 가진 int 속성을 생성하지 않습니다. 맞습니까? – samwize

+0

난 무작위 정수 속성 괜찮아요 할 것 같아요 ... –

2

당신은 그들이 NSMutableArray에 넣어, 당신의 객체를 가져, 여기에서 논의 된 바와 같이, 셔플 수 : 「랜덤 일종의 "같은 일이

What's the Best Way to Shuffle an NSMutableArray?

+0

내가 fetchedObjects 가져야하고 그것을 정렬해야한다고 생각하지 않아 그래서 NSFetchedResultsController를 사용하고 있습니다 – samwize

관련 문제