我在名为Todolists
的表上运行谓词搜索。 Todolists
有todos
。
我正在尝试将Todolists
due_at (Date)
<=
置于某个Date
或due_at Date
为nil
的所有Todolists
。
以下谓词可以正常工作,并且在Todos
到达特定日期之前获取所有NSDate *now = [NSDate date];
int daysToAdd = _dueDateSlider.intValue;
NSDate *datePeriod = [now dateByAddingTimeInterval:60*60*24*daysToAdd];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"ANY todos.due_at <= %@", datePeriod];
。
NSPredicate
但是,以下due_at Date
搜索会返回所有结果,即使某些搜索结果为nil
且某些搜索结果为NSPredicate *pred = [NSPredicate predicateWithFormat:@"ANY todos.due_at = nil"];
。
due_at = nil
NSPredicate
似乎在我Todos
搜索NSPredicate *pred = [NSPredicate predicateWithFormat:@"ANY todos.due_at <= %@ OR todos.due_at = nil", datePeriod];
表时正常,但在联接搜索中执行时却没有。
目标是让这项工作:
NSPredicate *pred = [NSPredicate predicateWithFormat:@"(todos.due_at <= %@) || (todos.due_at = nil)", datePeriod];
如何在连接表中搜索nil值?
======= UPDATE ==
我试图将此作为我的谓词:
-[__NSArrayI compare:]: unrecognized selector sent to instance 0x1001e36b0
但会导致此错误:
{{1}}
答案 0 :(得分:1)
我最终在运行fetchRequest返回的NSArray上运行NSPredicate。
// get all todolists from database
NSArray *todolists = [managedObjectContext executeFetchRequest:request error:&error];
// then filter using ALL and ANY
todolists = [todolists filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(ANY todos.due_at <= %@) || (ALL todos.due_at = nil)", datePeriod]];