2011-04-13 7 views
0

핵심 데이터를 통해 제공된 데이터로 UItable을 구현했습니다. 테이블이 잘 작동하고 데이터를 올바르게 표시하고 드릴 다운합니다.UITableview에서 데이터 정렬 관련 문제

그러나 다음과 같은 문제가 있습니다. 콘텐츠 데이터가 매번 다른 순서로 표시됩니다. 적어도 일관되게 또는 알파벳 순서대로 표시하는 것이 좋습니다.

왜 이런 일이 벌어지고있는 지 또는 문서화에서 검토해야 할 특정 속성이나 방법에 대한 아이디어가 있습니까?

도움이 많이

답변

3

당신은 fetchRequest 객체로 NSFetchRequest

NSSortDescriptor *sortDescriptorName = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)]; 
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptorName]]; 

그런 만들고, NSFetchedResultsController상의 NSSortDescriptor를 설정해야합니다.

이렇게하면 "이름"속성을 사용하여 목록이 알파벳 순으로 정렬되고 정렬하는 동안 대소 문자가 무시됩니다.

0

나는 그것에 대해 읽고 몇 가지 예를 검토하지만, 내가 말하는 것보다 다른 CoreData와 함께 많은 일을하지 않은 감사이 :

데이터는 단순히 CoreData 나오는 것처럼 그것은 소리

정렬되지 않은 것이고 실제로 순서가 보장되지 않습니다. 정렬 설명자 등으로 정렬 방법에 대한 추가 힌트를 제공하지 않는 한 실제로는 보장되지 않습니다.

죄송합니다. 구체적인 참조를 제공 할 수는 없지만 데이터를 가져 와서 반환되는 순서를 지정하는 방법이 있어야합니다.

또는 (뒤에서) CoreData에서 모든 테이블 데이터를 가져 와서 직접 정렬 할 수는 있지만 먼저 CoreData를 사용하는 목적을 상실하고 CoreData의 많은 기능을 삭제합니다. 데이터를 마사지하기 위해 직접 작성할 수있는 것보다 더 효율적일 수 있습니다.

1

요청에 정렬 설명자를 추가하기 만하면됩니다. 이 예제에서 데이터 객체에는 "sortOrder"에 대한 숫자 열이 있지만 대부분의 경우 정렬 할 수 있습니다.

- (NSMutableArray *)loadData { 
NSManagedObjectContext *context = [self managedObjectContext]; 

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"NameOfEntity" inManagedObjectContext:context]; 
[request setEntity:entity]; 

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

NSError *error = nil; 

NSMutableArray *mutableFetchResults = [[context executeFetchRequest:request error:&error] mutableCopy]; 
if (mutableFetchResults == nil) { 
    // Handle the error. 
} 

[request release]; 

return [mutableFetchResults autorelease]; 
} 
+0

팁 주셔서 감사합니다! – jason