У меня есть 3 объекта: «Бар», «Официант», «Продукт», следующая связь: «Бар» имеет отношение «один» к «Официант», и то же самое от Waiter to Product.Фильтрация NSArray от NSmanagedObject с отношением один к одному
У меня есть массив Официантов, работающих на баре, и я хочу отфильтровать официантов на основе того, служили ли они определенному Продукту.
Im пытается фильтровать массив всех официантов в баре, [bar.toWaiter AllObjects]
До сих пор я пытался:
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"toProduct.endSaleDate > %@ AND toProduct.published == YES", [NSDate date]];
и
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"ANY toProduct.endSaleDate > %@ AND ANY toProduct.published == YES", [NSDate date]];
Я хочу только тех официантов, у которых есть продукт, который «опубликовал» для YES и endSaleDate в будущем. То, что я получаю, - это Официанты, которые либо опубликовали Продукт, либо продукт с будущей датой.
Как достичь того, что я ищу.
Спасибо!
Если опубликован булева атрибут, попробуйте проверить toProduct.published == 1 –
Это единственная проблема? – subharb
Это моя догадка. Булевы хранятся в виде NSNumbers в Core Data и могут действительно вас поднять. Apple предлагает использовать [NSNumber numberWithBool: YES] при создании вашего предиката. https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Predicates/Articles/pCreating.html –