【问题标题】:NSPredicate for multiday events in a given rangeNSPredicate 用于给定范围内的多日事件
【发布时间】:2015-10-07 00:23:27
【问题描述】:

我被困在一个谓词中

我需要获取在给定月份期间发生的事件数组。 如果给定的日期是 7 月,即7 月 1-31 日.. 然后我需要 event1, event 2, event 3, event 5, event6

所以我有事件 startDate 和 endDate

Event 1 - June 10 - July 14
Event 2 - July 4
Event 3 - July 7
Event 4 - June 9
Event 5 - July 1-July 3
Event 6 - May 1 - Dec 10

我试过关注但它只会返回 event2, event3

[NSPredicate predicateWithFormat:[NSString stringWithFormat:@"%@ >= %%@ AND %@ < %%@", @"startTime", @"endTime"], startDate, endDate]

【问题讨论】:

    标签: ios mysql objective-c nspredicate fetch


    【解决方案1】:

    试试这个

     NSDate *now = [NSDate date];
    NSInteger month = 7; // given month 
    
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:now];
    [components setDay:0];
    [components setMonth:month];
    
    NSDateComponents *components1 = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:now];
    [components1 setDay:31];
    [components1 setMonth:month];
    
    NSDate *startDate = [calendar dateFromComponents:components];
    NSDate *endDate = [calendar dateFromComponents:components1];
    
    NSPredicate* pred = [NSPredicate predicateWithFormat:@"(date >= %@) AND (date =< %@)", startDate, endDate];
    NSArray* filteredArray = [yourarray filteredArrayUsingPredicate:pred];  // your array
    

    【讨论】:

    • 您的意思是 [NSPredicate predicateWithFormat:@"(startTime >= %@) AND (endTime =
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多