Базовые данные - Предикат для многих объектов

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

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 дней.

1 ответ

Вам нужно объединить:

// 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: @"songs.@count >= 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;
Другие вопросы по тегам