これらのオブジェクトは、一度2つの列を除いて一意ですが、そのうちの1回はUITableViewの表示として使用しています。 UITableViewはこれにより重複を表示することがよくあります。私は何とかこれらの複製をフィルタリングする必要があります。同じ名前のオブジェクトを削除するためにNSFetchedResultsControllerをフィルタリングします。
FetchResultでdistinctResultを設定すると、NSFetchedResultsControllerの機能が制限され、管理対象オブジェクトのサブクラスではなくREsultTypeがNSDictionaryである必要があるため、この場合は機能しません。
述語を使用してこれらの重複をどのようにフィルタリングすることができますか?これらのオブジェクトの各フィールドは、2つを除いて一意です。
-(NSFetchedResultsController *) fetchGroupedObjects:(NSString *)entityDescription
sortField:(NSString *)sortField
withPredicate:(NSPredicate *)predicate {
BPRAppDelegate *delegate = (BPRAppDelegate *)[UIApplication sharedApplication].delegate;
NSManagedObjectContext *context = delegate.managedObjectContext;
//NSError *error;
//Fetch the data....
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:entityDescription inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSSortDescriptor *groupDescription = [[NSSortDescriptor alloc]
initWithKey:GROUP_NAME ascending:YES];
//Sort by Category Name
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]
initWithKey:sortField ascending:YES];
NSMutableArray *sorts = [[[NSMutableArray alloc] init] autorelease];
[sorts addObject:sortDescriptor];
[sorts addObject:groupDescription];
[fetchRequest setSortDescriptors:sorts];
//[fetchRequest setResultType:NSDictionaryResultType];
//[fetchRequest setPropertiesToGroupBy:[entity.propertiesByName valueForKey:CONTRACTOR_NAME];
if (predicate != nil)
[fetchRequest setPredicate:predicate];
//NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
//NSFetchResultsController
[fetchRequest setFetchBatchSize:20];
NSFetchedResultsController *fetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:context sectionNameKeyPath:GROUP_NAME
cacheName:nil]; //Don't use a cache
[fetchRequest release];
[sortDescriptor release];
[groupDescription release];
return fetchedResultsController; //You can't autorelease this thing... the requestor must do that.
}
あなたを助けるのが大好きです。しかし、フィルタリングするエンティティに関する詳細が必要です。エンティティは何を呼んだのですか、それはどのフィールドにありますか?それはどれですか? –