gpt4 book ai didi

iphone - 使用谓词对核心数据进行排序以消除重复

转载 作者:行者123 更新时间:2023-12-03 18:59:04 25 4
gpt4 key购买 nike

我将一个事件数据库加载到核心数据中,该数据库具有重复的事件标题。这样做是为了让数据库可以提供事件每一天的独特信息。例如,每个日期的定价波动。

我现在需要从列表中删除重复的事件标题,该列表将显示为 TableView ,并使用 NSFetchRequest 和 NSPredicate 来提供过滤器。但我见过的所有示例都需要将非动态键值用作谓词过滤器的目标。例如,下面的 NSDate 提供了现在的时间作为关键过滤器,并且它可以工作。

当前,NSString * title 的目标是事件 ManagedObject 类中返回 nil 值的值。这是 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;
}

最佳答案

你可以设置

setReturnsDistinctResults:YES

在您的 fetchRequest 上。

有关更多信息,请参阅文档: NSFetchRequest Class Reference

关于iphone - 使用谓词对核心数据进行排序以消除重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1784332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com