У меня есть атрибут bookingDate, и я пытаюсь применить два разных условия для извлечения на основе bookingDate.Два предиката для одного и того же имущества в iOS
NSPredicate *confirmBookingPredicate = [NSPredicate predicateWithFormat:@"bookingDate > %@ AND ANY cab.confirmationStatus == 1 OR cab.confirmationStatus == 0", [NSDate date]];
NSPredicate *cancelBookingPredicate = [NSPredicate predicateWithFormat:@"bookingDate < %@ AND bookingDate >= %@ AND ANY cab.confirmationStatus == 1", [NSDate date], [NSDate dateWithNoTime:[[NSDate date] dateByAddingTimeInterval:MINUSFORTYFIVEDAYS]]];
NSPredicate *nilPredicate = [NSPredicate predicateWithFormat:@"[email protected] != 0"];
NSPredicate *DatePredicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[confirmBookingPredicate, cancelBookingPredicate, nilPredicate]];
NSFetchedResultsController *fetchedResultsController;
NSFetchRequest *fetchRequest = [Trip MR_requestAllSortedBy:@"bookingDate" ascending:YES];
[fetchRequest setFetchBatchSize:10];
[fetchRequest setPredicate:DatePredicate];
[fetchRequest setReturnsObjectsAsFaults:NO];
fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:_defaultContext sectionNameKeyPath:@"bookingId" cacheName:nil];
Но он не функционирует должным образом. Я не понимаю, почему. Незлое руководство.
Что вы ожидаете от этого? Вы имели в виду «andPredicate» в этом случае? Если вы хотите совместить, по крайней мере, при условии, вы можете использовать 'orPredicate'. –
Да, я имел в виду И предикат, и я хочу, чтобы все заказы (подтвержденные/отмененные), которые в будущем, и только отмененные заказы, которые до сегодняшней даты. – cheeseRoot
'confirmBookingPredicate' хочет дату бронирования> текущая дата и' cancelBookingPredicate' хотят дату бронирования <текущая дата. Как эти два условия могут удовлетвориться в одном доступе? –