IOS / Objective-C / Core Data: NSP предикаты со сложной условной логикой - PullRequest
0 голосов
/ 17 мая 2018

Я использую NSPredicate для фильтрации сущности в coredata.Большинство примеров, которые Apple и другие предоставляют, не воплощают в себе сложную логику, которую вы можете сделать в SQL, но, поскольку предикаты разрешаются в sql, мне показалось, что возможно больше, чем можно легко просмотреть в документах Apple.

В частности, я хотел бы отфильтровать управляемые объекты по одной дате, если определенный атрибут имеет значение true, но более ранней дате, если атрибут имеет значение false.

Что-то вроде:

NSDate *now = [NSDate date];
NSDate *lastYear =   [[NSCalendar currentCalendar] dateByAddingUnit:NSCalendarUnitYear value:-1 toDate:now options:0];

NSPredicate *myPred=  [NSPredicate predicateWithFormat:@"new==1 ? date >= %@ :date>=%@", now,lastYear];
* 1007Есть ли способ поместить условную логику в предикат NSP?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Попробуйте это

[NSPredicate predicateWithFormat:@"(new == 1 AND date >= %@) OR (new == 0 AND date >= %@)", now, lastYear];
0 голосов
/ 17 мая 2018

Это должно быть достигнуто с помощью следующего формата

@"(new == 1 AND date >= %@) OR (new == 0 AND date >= %@)", now, lastYear

Надеюсь, это поможет.

...