Mam bazę danych zdarzeń załadowaną do danych podstawowych, która ma zduplikowane tytuły zdarzeń. Zostało to zrobione, aby baza danych mogła dostarczyć unikalnych informacji dla każdego dnia wydarzenia. Np. Wahania cen w poszczególnych dniach.Sortowanie danych podstawowych za pomocą predykatu w celu wyeliminowania duplikatów
Teraz muszę usunąć zduplikowane tytuły zdarzeń z listy, która będzie wyświetlana jako widok tabeli za pomocą NSFetchRequest i NSPredicate w celu zapewnienia filtru. Jednak wszystkie przykłady, które widziałem, wymagają użycia wartości klucza dynamicznego jako celu dla filtra predykatów. Np. NSDate zapewnia teraz czas jako filtr klucza i działa.
Obecnie tytuł NSString * dotyczy wartości w klasie ManagedObject zdarzeń, która zwraca wartość zerową. Oto wycinek z FetchResultsController.
- (NSFetchedResultsController *)fetchedResultsController {
if (fetchedResultsController == nil) {
NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
NSPredicate *predicate = [[[NSPredicate alloc] init] autorelease];
[fetchRequest setReturnsObjectsAsFaults:NO];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext]];
NSArray *sortDescriptors = nil;
NSString *sectionNameKeyPath = nil;
NSDate *date = [NSDate date];
NSString *title = [events title];
if ([fetchSectioningControl selectedSegmentIndex] == 1) {
predicate = [NSPredicate predicateWithFormat:@"(closeDate >= %@) AND (title == %@)", date, title ];
sortDescriptors = [NSArray arrayWithObjects:[[[NSSortDescriptor alloc] initWithKey:@"category.name" ascending:YES] autorelease], [[[NSSortDescriptor alloc] initWithKey:@"openDate" ascending:YES] autorelease], nil];
sectionNameKeyPath = @"category.name";
} else if ([fetchSectioningControl selectedSegmentIndex] == 0){
predicate = [NSPredicate predicateWithFormat:@"closeDate >= %@", date];
sortDescriptors = [NSArray arrayWithObject:[[[NSSortDescriptor alloc] initWithKey:@"openDate" ascending:YES selector:@selector(compare:)] autorelease]];
sectionNameKeyPath = @"day";
}
[fetchRequest setPredicate:predicate];
[fetchRequest setSortDescriptors:sortDescriptors];
fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:sectionNameKeyPath cacheName:@"EventsCache"];
}
return fetchedResultsController;
}
sam problem tutaj. –