gpt4 book ai didi

ios - 使用 UISearchBar 在 Core Data 中搜索 NSDates(使用 NSDateFormatter 的字符串)

转载 作者:行者123 更新时间:2023-11-29 12:58:12 25 4
gpt4 key购买 nike

我有一个 TableView ,目前正在完美地搜索 Core Data 数据库的字符串属性。但是,它不搜索日期。

我的日期是 NSDates,但使用 NSDateFormatter 作为字符串显示给用户。

我正在使用核心数据。

我当前在 fetchresultscontroller 中的谓词是这样的:

if ([self.timelineSearchBar.text length] > 0) {
NSPredicate *predName = [NSPredicate predicateWithFormat:@"ANY whoBy.name CONTAINS[c] %@", self.timelineSearchBar.text];
NSPredicate *predOccasion = [NSPredicate predicateWithFormat:@"ANY occasion.title CONTAINS[c] %@", self.timelineSearchBar.text];
NSPredicate *predDate = [NSPredicate predicateWithFormat:@"ANY dates.dateOfEvent CONTAINS[c] %@", self.timelineSearchBar.text];


NSPredicate *compPredicate = [NSCompoundPredicate orPredicateWithSubpredicates:@[predName, predOccasion, predDate]];
[fetchRequest setPredicate:compPredicate];

有了它,我可以搜索“姓名”和“场合标题”。但是,我无法搜索日期。

日期格式为:

-(NSString *)sectionDateFormatter
{
// this can be fancier if you need a custom format or particular timezone:
return [NSDateFormatter localizedStringFromDate:self.dates.dateOfEvent
dateStyle:NSDateFormatterLongStyle
timeStyle:NSDateFormatterNoStyle];
}

但是,当我搜索任何日期时,它根本不显示。无论如何我也可以在这里搜索日期(而不必创建另一个 fetchedResultsController 等)?

谢谢,欢迎任何想法!

编辑:包括我如何保存日期

NSCalendar *cal = [NSCalendar currentCalendar];

NSDateComponents *components = [cal
components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit
fromDate:self.datePicker.date];
NSDate *selectedDate = [cal dateFromComponents:components];

最佳答案

NSPredicate 将允许使用典型的比较运算符搜索日期。不过请记住,用户对日期的理解比设备要模糊得多,因此搜索应该几乎总是包含不等式......

NSDate *startDate = // date from the user's input, minus a little, like to the start of the specified day
NSDate *endDate = // date from the user's input, plus a little, like to the end of the specified day

NSPredicate *dateRangePredicate = [NSPredicate predicateWithFormat:@"(dateOfEvent >= %@) AND (dateOfEvent <= %@)", startDate, endDate];
NSPredicate *compPredicate = [NSCompoundPredicate // as you have it

关于ios - 使用 UISearchBar 在 Core Data 中搜索 NSDates(使用 NSDateFormatter 的字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20478465/

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