NSFetchedResultsController가 관리하는 테이블 뷰가 있습니다.FetchedResults 컨트롤러 계산 값 필터링
제 문제는 핵심 데이터 엔티티에서 관련 값을 조사해야하는 계산 된 값을 기반으로 데이터를 필터링하려고합니다.
추가 컨텍스트 제공 : "Task"라는 핵심 데이터 엔티티와 "TaskActions"라는 다분간 관계가 있습니다.
작업을 검토하고 일부 사용자 지정 논리를 사용하여 작업 tableview를 정렬하고 싶습니다.
문제는 이것이 어떻게 가장 잘 이루어 졌는지 정말로 모르겠다는 것입니다. 여기
내가을 시도한 것입니다 :
NSFetchRequest *requestForAll = [[NSFetchRequest alloc] initWithEntityName:@"Task"];
NSPredicate *actionPredicate = [NSPredicate predicateWithFormat:@"taskActionPerformed == %@",@YES];
requestForAll.predicate = actionPredicate;
[self setFetchedResultsController:[[NSFetchedResultsController alloc] initWithFetchRequest:requestForAll managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil]];
나는 개체의 속성을 "taskActionPerformed"를 넣어, 그래서 같은 게터 값을 대체하여 작업의 정렬이 "필터링"을 얻을 수 있습니다 :
- (NSNumber*)taskActionPerformed
{
for (TaskActions *action in self.actions)
{
//Perform Logic
return @YES;
}
return @NO;
}
그러나, 나는 (내가 게터로하고있어 같은) KVO 메소드를 오버라이드 (override)하는 것은 권장하지 않습니다 읽었습니다, 심지어는 권장하지 않습니다.
또한 위의 솔루션은 데이터를 보존 할 때까지만 작동합니다. 데이터를 저장 한 후에는 taskActionPerformed가 호출되지 않고 fetchedresultscontroller가로드되지 않습니다.
저는이 일반적인 문제를 해결하는 가장 좋은 방법을 알고 싶습니다.
나는 이것이 어떻게 이루어질 지에 대한 생각이 다소 있다고 생각하지만,이 필터를 "메모리 내에서"어떻게 수행해야하는지에 관해 더 많은 지침을 줄 수 있습니까? 특히 NSFetchedResultsController를 메모리 구조로 사용하는 방법 (NSArray를 추측하고 있습니다). – hatunike
오른쪽. 대부분의 경우'datasource' 메소드에서 가져온 결과 컨트롤러의'fetchedObjects'를 즉시 필터링 할 수 있습니다. NSArray도 가능합니다. – Mundi