Основные данные NSP предикат для фильтрации результатов - PullRequest
0 голосов
/ 16 марта 2010

У меня есть NSManagedObject, который содержит bID и pID. В пределах набора NSManagedObjects я хочу только возвращенное подмножество, и я изо всех сил пытаюсь найти правильный NSPredicate или способ получить то, что мне нужно из Core Data.

Вот мой полный список:

ставка pid
41 0
42 41
43 0
44 0
47 41
48 0
49 0
50 43

Выше указаны отношения родитель-ребенок.

Правила:

Если PID записи = 0, это означает, что эта запись является родительской записью. Если PID записи = 0, то PID записи ссылается на BID родительской записи.

Пример: * * один тысяча двадцать-одна

1) BID = 41 - родительская запись. Зачем? Поскольку записи BID = 42 и BID = 47 имеют PID, равный 41, что означает, что они являются дочерними для его записи PID.
2) BID = 42 имеет родительскую запись с BID = 41.
3) BID = 43 является родительской записью.
4) BID = 44 является родительской записью.
5) BID = 47 имеет родительскую запись с BID = 41, потому что его PID = 41. См. № 1 выше.
6) BID = 48 - родительская запись.
7) BID = 49 - родительская запись.
8) BID = 50 является дочерней записью, а ее родительская запись имеет BID = 43.

Видите образец?

Теперь, в основном, я хочу получить только следующие строки:

ставка pid
44 0
47 41
48 0
49 0
50 43

BID = 41, BID = 48, BID = 49 должны быть возвращены, так как нет записей с PID, равным их BID.

BID = 47 должен быть возвращен, потому что это самый последний дочерний элемент PID = 41.
BID = 50 должен быть возвращен, потому что это самый последний дочерний элемент PID = 43.

Надеюсь, это поможет объяснить это подробнее.

1 Ответ

0 голосов
/ 16 марта 2010

Ооо, это довольно просто, вам просто нужно установить предикат ставки> = 43.

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"bid >= %@", [NSNumber numberWithInt:43]];

Полагаю, возможно, у вас проблемы с NSNumber, потому что Core Data сохраняет много типов под NSNumber, включая: int, BOOL и т. Д. * См. Здесь

...