我有一个有序的可用对象数组,它是一个包含两个属性startAt和endAt的类。
我想从我的可用性数组中提取特定日期的对象,而不考虑时间。
我也想使用NSPredicate代替“for”循环来实现它。
你可以帮帮我吗? 感谢答案 0 :(得分:0)
for-in
循环实际上比NSPredicate
更快,因为你可以将它转换为字符串或提取它以便于比较,但是如果你想要那么格式应该是:
@"(%@ >= %@) AND (%@ <= %@)", dateForCompare, dayStart, dateForCompare, dayEnd
其中dayStart
是00:00:00
的比较日期,dayEnd
是23:59:59
的比较日期,根据您的需求进行调整,你必须这样做,因为NSDate
对象包含确切的日期和时间
希望有所帮助
答案 1 :(得分:0)
如果您使用时间戳(NSNumber)来存储startAt和endAt,那么您可以使用谓词作为波纹管(以获取其开始日期比当前日期更高的所有对象)
NSPredicate *pred = [NSPredicate predicateWithFormat:@"startAt > %@", [NSNumber numberWithDouble:[[NSDate date] timeIntervalSince1970]]];
NSArray *filteredArr = [yourArray filteredArrayUsingPredicate:pred];
如果您只使用日期字符串,则可以使用
NSPredicate *pred = [NSPredicate predicateWithFormat:@"startAt = %@", @"your date string must be same as formate you saved in array"];
如果您只使用日期字符串,则可以使用