NSPredicate для проверки соответствия атрибута CoreData другой переменной критериям - PullRequest
1 голос
/ 03 января 2012

У меня есть объект с тремя полями

Task {
   Active BOOL
   Recurrent Int
   Started date
}

'Recurrent' - задержка для выполнения задачи. Если задание имеет заданное значение «Запущено» и «Повторяемость» 15, это означает, что его необходимо повторить через 15 дней после «Запущено». Я хочу создать NSP-предикат для поиска всех сущностей, которые на определенную дату должны быть выполнены.

Например, предположим, что в магазине есть одна сущность с 'Started' = 15/12/2011 'Recurrent' = 15, а затем запрос CoreData 29/12/2011 не даст результата. Выполнение запроса 30/12/2011 даст результат, поскольку с момента начала работы прошло 15 дней.

Я бы легко справился с этим с помощью SQL с помощью некоторой математической операции, но я абсолютно не представляю, как это сделать с помощью NSPredicate, учитывая, что запрос выполняется непосредственно в поле. Я хотел бы остаться с NSPredicate, потому что это приложение для iOS с UITableView, и я планирую использовать NSFetchedResultsController, но если это невозможно, NSArray объектов будет в порядке.

спасибо

1 Ответ

1 голос
/ 03 января 2012

«Легким» ответом будет сохранение recurrent в качестве даты.Или сохранить значение recurrentResolved, которое является датой, и извлечь его.

Менее простой и уродливый вариант - загрузить все задачи и выполнить вычисления в памяти (для удобства), а затем выполнить секунду NSPredicate для объектов.Как только они загружены в память, ваш NSPredicate может использовать методы вашего подкласса.

Я бы порекомендовал первый вариант.Второй намного дороже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...