我有一个数组,其中包含具有 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/