0

У меня есть сложный запрос выборки я не знаю, как выполнить,
Мой основной Дат модель:основных данных - Predicate ко многим объектам

Artis 
----- 
name 

songs -> (to-many relationship to Song Object) 

Song 
----- 
title 
release_Date 

artist -> (to-one relationship to Artist Object) 

мне нужен предикат для выборки 5 лучших художников с большинством песен (и как минимум 2 песни), и все песни release_Date должны быть в течение последних 30 дней.

ответ

0

Вы должны сочетать в себе:

// Predicate for date at least 30 days back 

NSDate *date = [NSDate date]; 
NSDate *date30daysBack = [date dateByAddingTimeInterval:-60*60*24*30]; 

[NSPredicate predicateWithFormat: @"song.release_date >= %@", date30daysBack]; 

// Predicate for at least 2 songs 

[NSPredicate predicateWithFormat: @"[email protected] >= 2"]; 

// Sort descriptor for most songs 

//EDIT 
//Sorting should be done after the fetch request. 

// Set the fetchLimit of your NSFetchRequest to 5 
request.fetchLimit = 5; 
+2

Примечание: Не каждый день имеет 60 * 60 * 24 секунд (вещь перехода на летнее время переходов). –

+0

Правильно, дата должна быть сделана с использованием 'NSDateComponents' – graver

+0

Спасибо за ваш ответ, 2 вопроса: 1. Можно ли использовать один предикат с AND для выполнения первых двух предикатов? 2. Есть ли способ использовать предикат или какое-то выражение, чтобы сделать верх 5? – Mario

Смежные вопросы