从自定义对象Array中提取具有特定日期的对象

时间:2016-01-05 10:10:01

标签: ios sorting nsarray nsdate nspredicate

我有一个有序的可用对象数组,它是一个包含两个属性startAt和endAt的类。

我想从我的可用性数组中提取特定日期的对象,而不考虑时间。

我也想使用NSPredicate代替“for”循环来实现它。

你可以帮帮我吗? 感谢

2 个答案:

答案 0 :(得分:0)

对于我来说,

for-in循环实际上比NSPredicate更快,因为你可以将它转换为字符串或提取它以便于比较,但是如果你想要那么格式应该是:

@"(%@ >= %@) AND (%@ <= %@)", dateForCompare, dayStart, dateForCompare, dayEnd其中dayStart00:00:00的比较日期,dayEnd23: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"];

如果您只使用日期字符串,则可以使用