ios - 有什么方法可以使用星期几的谓词来过滤日期数组吗?

标签 ios nsdate nspredicate

我有一个数组,其中包含具有 NSDate 属性的自定义对象。我想以某种方式获取 NSDate 为星期日、星期一、星期二等的所有对象。

我觉得使用谓词不可能做到这一点,但希望我错了,希望有一种方法无需遍历所有对象、获取日期、使用日期格式化程序转换它们,然后计算出日期。

p>

最佳答案

我认为谓词代码的 block 方法来完成这项任务会更可行。

这是我的代码

    NSPredicate *pred = [NSPredicate predicateWithBlock:^BOOL(Object * _Nullable evaluatedObject, NSDictionary<NSString *,id> * _Nullable bindings) {

    NSCalendar* cal = [NSCalendar currentCalendar];
    NSDateComponents* comp = [cal components:NSCalendarUnitWeekday fromDate:evaluatedObject.mDate];
    NSInteger weekDay = [comp weekday]; // 1 = Sunday, 2 = Monday, etc.

    return weekDay == 4;
}];

NSArray *arrFilteredObject = [arrData filteredArrayUsingPredicate:pred];

Object 是我的自定义对象类,它包含两个字段,即一个 NSString 和一个 NSDate 属性。

这是我的对象类供您引用

@interface Object : NSObject

@property (nonatomic, strong) NSString *title;
@property (nonatomic, strong) NSDate *mDate;

@end

希望对您有所帮助。如果您在使用此方法时遇到任何问题,请告诉我。

关于ios - 有什么方法可以使用星期几的谓词来过滤日期数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53095510/

相关文章:

ios - Soundcloud:当从另一个 View Controller 呈现时,SCLoginViewController 与状态栏重叠

ios - 在调整时区时将特定日期字符串转换为 Swift 3 日期

swift - 如何在 swift 中找到两个 unix 时间之间的分钟差异?

iOS Objective-C 如何使用谓词在字符串数组中搜索多个非连续关键字?

ios - 核心数据 NSPredicate 使用 in 子句获取实体关系

ios - Swift 中的字符指针

ios - 输出到 UITextField

ios - 如何解决Unable simultaneously satisfy constraints

swift - NSdate 范围总删除周末 Swift

ios - 基于 3 个 NSPredicates 动态过滤数组