2013-09-14 2 views
0

У меня есть массив, содержащий несколько словарей, в которых есть поле, в котором хранятся часы и минуты, такие как «14:22».Фильтр по дате hh: mm с использованием NSPredicate

Как фильтровать массив по времени? например Я хочу, чтобы все dictionaried, где это поле есть время> 01:00 и время < 18:00

ответ

0

вы можете хранить значения в массив и использовать этот

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

будет сортировать ЕВ время

+0

пожалуйста, вы можете разместить здесь рабочий пример –

+2

вопрос был о * фильтрации *, а не о * сортировка *. –

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; 
}]]; 
Смежные вопросы