Синтаксис предиката NSFetchRequest

У меня есть объект под названием Task в моей модели Core Data. Сущность Task имеет трансформируемый атрибут под названием date. Класс атрибута date - это класс с именем TDate (который соответствует NSCoding, следовательно, является трансформируемым атрибутом). TDate имеет свойство типа NSInteger, называемое month.

В моем NSFetchRequest я хочу получить все Task объектов определенного месяца. Я использую следующий предикат:

[NSPredicate predicateWithFormat:@"date.month == 7"]

Это должно достать мне все Task объекты в июле. Однако с этим предикатом извлеченные объекты не возвращаются. Я могу подтвердить, что есть Task объектов, у которых месяц 7 (июль), вынув предикат. Что-то не так с синтаксисом моего предиката?

Спасибо


person indragie    schedule 18.07.2010    source источник


Ответы (1)


Если вы используете серверную часть SQLite, вы не можете выполнять поиск по трансформируемым свойствам. На бэкэнде SQLite предикат запроса на выборку преобразуется в SQL и выполняется в механизме SQLite. Поскольку SQLite не знает какао, предикаты, которые выполняются в серверной части SQLite, не могут использовать трансформируемые свойства.

Если вы используете XML, двоичное хранилище или хранилище в памяти, вы можете использовать предикаты, которые запрашивают трансформируемые свойства, поскольку весь граф объекта находится в памяти и запрашивается с использованием собственного Какао.

person Barry Wark    schedule 18.07.2010
comment
В итоге я создал отдельные атрибуты для каждого свойства объекта date. Спасибо. - person indragie; 19.07.2010