Вот что вы можете сделать.
1) Установите NSSortDescriptors
для вашего uBDay и uName, чтобы ваши записи были отсортированы сначала по дню рождения, а затем по имени.
2) Создайте NSPredicate
, который тянет все дни рождения между [NSDate now]
(то есть сегодня) до определенного времени в будущем (то есть 30 дней в будущем = [NSDate dateWithTimeIntervalSinceNow:kOneDayTimeInterval*30]
)
Пример кода ниже:
#define kOneDayTimeInterval 86400 // this is in seconds: 86400 = 1 day
- (NSFetchedResultsController *)fetchedResultsController {
...
NSSortDescriptor *sortByBDay = [[NSSortDescriptor alloc] initWithKey:@"uBday" ascending:YES];
NSSortDescriptor *sortByName = [[NSSortDescriptor alloc] initWithKey:@"uName" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortByBDay,sortByName, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[sortDescriptors release];
[sortByName release];
[sortByReleaseDate release];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(uBDay > %@) AND (uBDay <= %@)", [NSDate date], [NSDate dateWithTimeIntervalSinceNow:kOneDayTimeInterval*30]];
[fetchRequest setPredicate:predicate];
...