2013-12-24 6 views
0

NSFetchedResultsController을 사용하여 테이블에 데이터를 표시하고 있습니다. 데이터 저장소에는 groupID의 행이 많이 포함되어 있으며 여러 엔터티는 groupID을 공유 할 수 있습니다.NSFetchRequest/NSFetchedResultsController는 단일 속성을 고유하지만 엔터티의 다른 특성을 사용하여 정렬합니다.

각 엔티티에는 삽입 날짜 속성도 있습니다.

뚜렷한 groupID 목록을 삽입 날짜 속성별로 정렬하고 싶습니다. 다음 코드는 삽입 날짜 속성에 따라 정렬되지 않는다는 점을 제외하고는 작동합니다. 이 속성은 가져온 속성 중 하나가 아니기 때문에 정렬 할 수 없다고 가정합니다.

그리고 나는 MagicalRecord도 사용하고 있습니다.

정렬을 위해 엔티티의 다른 속성을 사용할 수 있지만 결과의 일부로 포함 할 수있는 방법이 있습니까? 가져온 속성에 삽입 날짜를 추가하면 날짜가 모두 고유하므로 불필요합니다.

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"userID like[c] %@", THEUSERUSERID]; 

    NSFetchRequest *fetchRequest = [AnEntity MR_requestAllWithPredicate:predicate]; 
    [fetchRequest setReturnsDistinctResults:YES]; 
    [fetchRequest setResultType:NSDictionaryResultType]; 
    [fetchRequest setPropertiesToFetch:@[@"groupID"]]; 

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"inDate" ascending:NO]; 

    [fetchRequest setSortDescriptors:@[sortDescriptor]]; 

    _frController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:[NSManagedObjectContext MR_rootSavingContext] sectionNameKeyPath:nil cacheName:nil]; 

답변

1

차드 백 ... 나는 같은 문제가있었습니다. 나는 setPropertiesToFetch를 조사하여 NSPropertyDescriptions의 NSArray가 필요하다는 것을 알았습니다 ... 단지 속성 이름이 아닙니다.

[fetchRequest setPropertiesToFetch:@[@"groupID"]]; 

을하고이 ADD :

난 당신이를 제거하면 생각

NSDictionary *entityProperties = [entity propertiesByName]; 
NSPropertyDescription *propDescription = [entityProperties objectForKey:@"groupID"]; 
NSArray *propArray = [NSArray arrayWithObject:propDescription]; 
[fetchRequest setPropertiesToFetch:propArray]; 

당신을 위해 일해야 ... 그것은 나를 위해 한!

+0

문제를 피하기 위해 앱에서 변경 한 것 같습니다. 내 기억을 새로 고침하고 이것이 어떻게 작동하는지 보려면 앱의이 영역을 다시 방문하겠습니다. – chadbag