0

entityオブジェクトを含む があります。 今日の のを持つオブジェクトのみを使用NSDate (format yyyy-MM-dd)して を実行したいと思います。だから私は次のことをやっています。fetch requestNSDate

 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);

MyNSLogは常に一致を返しません。

誰かがこれで私を助けることができますか?

編集

私のエンティティには、次のような NSDates が含まれています。

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

これらのNSDatesを今日の日付と比較できると思いましたか? しかし、私のエンティティの NSDates にはタイムスタンプがないため、これはおそらく機能していませんか?

4

1 に答える 1

4

あなたの日付は、秒なども含むタイムスタンプです。必要なのは「間」の述語です。

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];
于 2013-08-26T08:24:38.623 に答える