Core Data Predicate Date Comparison

前端 未结 5 2126
醉话见心
醉话见心 2020-12-01 04:50

Im trying to fetch all the objects in an entity matching a user selectedDate (it\'s an NSDate). The Core Data code is fine but my predicate keeps returning 0 results, the da

5条回答
  •  伪装坚强ぢ
    2020-12-01 05:12

    I've recently spent some time attempting to solve this same problem and have resolved the following, now updated for iOS 8 and above...

    NSDate *dateDay = nil;
    NSDate *dateDayStart = nil;
    NSDate *dateDayNext = nil;
    
    dateDay = <>;  //for example - selectedDate
    
    dateDayStart = [[NSCalendar currentCalendar] startOfDayForDate:dateDay];
    
    //  dateDayNext EITHER
    dateDayNext = [dateDayStart dateByAddingTimeInterval:(24 * 60 * 60)];
    
    //  dateDayNext OR
    NSDateComponents *dateComponentDay = nil;
    dateComponentDay = [[NSDateComponents alloc] init];
    [dateComponentDay setDay:1];
    dateDayNext = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponentDay
                                                                toDate:dateDayStart
                                                               options:NSCalendarMatchNextTime];
    

    ...and the NSPredicate for the Core Data NSFetchRequest (as already shown above in other answers)...

    [NSPredicate predicateWithFormat:@"(dateAttribute >= %@) AND (dateAttribute < %@)", dateDayStart, dateDayNext]]
    

提交回复
热议问题