Сравнение строки даты с NSPredicate - PullRequest
0 голосов
/ 26 марта 2012

Мне было интересно, есть ли в любом случае возможность фильтрации набора с использованием NSPredicate, отсортированного по дате, где дата имеет формат NSString в MMMM dd (т.е. 24 марта) (это НЕ NSDate.).

Ответы [ 3 ]

4 голосов
/ 26 марта 2012

Если вы храните дату в виде строки в CoreData, предикат прост.

    NSPredicate* predicate = [NSPredicate predicateWithFormat:@"theDate like %@", theDateString];

Но я предполагаю, что дата хранится как объект NSDate. Попробуйте использовать NSDateFormatter для преобразования вашей строки в NSDate.

NSDateFormatter* df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"MMMM dd"];
NSDate* theDate = [df dateFromString:theDateString];
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"SomeDate >= %@", theDate];
1 голос
/ 26 марта 2012

Сначала необходимо преобразовать его в NSDate, чего можно добиться с помощью функции предиката с NBredicate. Преобразуйте объект и проверьте его в своем блоке предикатов. Я никогда не использовал его лично, поэтому этот ответ теоретический.

0 голосов
/ 17 ноября 2015

Сравнение NSDate или даты в NSArray с NSPredicate в Swift.

В Swift 2.1 или 2.0:

//format data
let Formata_Data = NSDateFormatter()
Formata_Data.calendar = NSCalendar.currentCalendar()
Formata_Data.dateFormat = "dd/MM/yyyy"
let _data_filtro = Formata_Data.stringFromDate(dias_filtros!)
let _data_hoje = Formata_Data.stringFromDate(NSDate())

let data_filtro_ns = Formata_Data.dateFromString(_data_filtro)

print("DATA.... \(_data_filtro)")

var predicate_Data = NSPredicate(block: { (data_string, Orcs) -> Bool in
    return data_filtro_ns?.earlierDate(Formata_Data.dateFromString(data_string) as! String)!) == data_filtro_ns
})
var array_filtro_dias = Orcamentos.filteredArrayUsingPredicate(predicate_Data)
Orcamentos = array_filtro_dias
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...