1

というテーブルで述語検索を実行していますTodolistsTodolists持っていtodosます。

私は、が特定の場所またはがどこにあるかをすべて取得しようとしてTodolistsいます。due_at (Date)<=Datedue_at Datenil

次の述語は正常に機能し、特定の日付より前のすべての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とうまくいくようですが、結合検索で実行するとうまくいきません。NSPredicateTodos

目標は、この作業を行うことです。

NSPredicate *pred = [NSPredicate predicateWithFormat:@"ANY todos.due_at <= %@ OR todos.due_at = nil", datePeriod];

結合テーブルでnil値を述語検索するにはどうすればよいですか?

=======更新======

私はこれを述語として使用しようとしました:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"(todos.due_at <= %@) || (todos.due_at = nil)", datePeriod];

ただし、次のエラーが発生します。

-[__NSArrayI compare:]: unrecognized selector sent to instance 0x1001e36b0
4

1 に答える 1

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]];
于 2013-03-25T01:25:11.153 に答える