使用NSPredicate按日期hh:mm过滤

时间:2013-09-14 08:01:38

标签: ios filter nspredicate

我有一个包含多个词典的数组,其中有一个存储小时和分钟的字段,如“14:22”。

如何按时间过滤数组?例如我希望所有字段都在那个字段有时间的地方> 01:00和时间< 18:00

2 个答案:

答案 0 :(得分:2)

这样的事情可以满足您的需求:

NSArray *data = @[@{@"time": @"10:05"},@{@"time": @"1:06"},@{@"time": @"18:24"},@{@"time": @"7:29"},@{@"time": @"11:55"}];
NSArray *filteredData = [data filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(NSDictionary *dict, NSDictionary *bindings) {
    NSArray *components = [dict[@"time"] componentsSeparatedByString:@":"];
    NSAssert(components.count >= 2, @"Invalid time format.");
    NSInteger h = [components[0] integerValue];
    NSInteger m = [components[1] integerValue];
    return h >= 1 && h < 18;
}]];

答案 1 :(得分:0)

您可以将值存储到数组中并使用此

[datesArray sortUsingSelector:@selector(compare:)];

它将按时间排序