【问题标题】:NSFetchrequest with NSdate predicate带有 NSdate 谓词的 NSFetchrequest
【发布时间】:2013-08-26 08:10:05
【问题描述】:

我有一个entity,其中包含具有NSDate (format yyyy-MM-dd) 的对象现在我想做一个fetch request,只包含今天具有NSDate 的对象。所以我正在做以下事情。

 NSDate *now = [NSDate new];
   RKManagedObjectStore *store = [[DominoDataModel sharedDataModel] objectStore];
    NSManagedObjectContext *context = store.mainQueueManagedObjectContext;

    NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Event"];
    NSPredicate *predicate = [NSPredicate predicateWithFormat:
                              @"eve_date = %@",now];
    fetchRequest.predicate = predicate;
    NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"eve_date" ascending:YES];
    fetchRequest.sortDescriptors = @[descriptor];
    NSArray *matches = [context executeFetchRequest:fetchRequest error:nil];
    arrConcerten = [matches mutableCopy];
    NSLog(@"matches %@",matches);

我的NSLog 总是不返回匹配项。

有人可以帮我吗?

编辑

我的实体包含这样的 NSDates:

2013/08/29
2013/08/30
2013/09/02
2013/09/15
2013/09/28

我以为我可以将这些 NSDate 与今天的日期进行比较?但这可能不起作用,因为我实体中的 NSDates 没有时间戳?

【问题讨论】:

  • 没有“格式”的NSDateeve_date 属性中的值究竟是什么?
  • 这不是(几乎)与您上一个问题stackoverflow.com/questions/18332769/…中的问题相同吗? - 你必须与“一天的开始”和“第二天的开始”进行比较。
  • @CarlVeazey 我已经编辑了我的问题
  • 这看起来不像是格式化日期字符串的NSDate。当您查看底层持久存储时,您会发现什么值?或者,您如何在代码中填充这些日期?

标签: iphone ios objective-c nsdate nsfetchrequest


【解决方案1】:

您的日期是一个时间戳,其中还包含秒等。您需要的是“介于”谓词。

NSPredicate *subPredFrom = [NSPredicate predicateWithFormat:@"eve_date >= %@ ", dateFrom];
[subpredicates addObject:subPredTo];

NSPredicate *subPredTo = [NSPredicate predicateWithFormat:@"eve_date < %@", dateTo];
[subpredicates addObject:subPredFrom];

其中 dateTo 是第二天 00:00 而 dateFrom 是请求的一天 00:00 ;) 要得到这个,你必须使用 NSDateComponents

NSDateComponents *components = [calendar components:NSYearCalendarUnit| NSMonthCalendarUnit| NSWeekCalendarUnit| [NSDayCalendarUnit fromDate:now];
NSDate *today = [calendar dateFromComponents:components];
[components setDay:components.day+1]; //
NSDate *tomorrow = [calendar dateFromComponents:components];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多