как найти 20 самых посещаемых элементов, чтобы добавить их в избранное - PullRequest
0 голосов
/ 20 декабря 2011

Im Использование основных данных. Я работал над недавно посещенными предметами следующим образом.

//Create a fetch request
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entityDescription = [NSEntityDescription 
                               entityForName:@"Recent" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entityDescription];

//set Predicate to the fetch request
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"eyeTerm = %@",term];
[fetchRequest setPredicate:predicate];
NSError *error = nil;

//Create an Array Using fetch Request
NSMutableArray *recentsArray = [[self.managedObjectContext executeFetchRequest:fetchRequest error:&error] mutableCopy];
if([recentsArray count]==0) {
    //Save to Recent
    Recent *recent = [NSEntityDescription insertNewObjectForEntityForName:@"Recent" inManagedObjectContext:self.managedObjectContext];
    recent.eyeTerm=term;
    recent.lastviewed = [NSDate date];
    recent.repeatCount = 0;
}

else {
    //Increment the repeatCount of the recent object.
    Recent *recent = [recentsArray objectAtIndex:0];
    int countValue = [recent.repeatCount intValue];
    countValue ++;
    recent.repeatCount = [NSNumber numberWithInt:countValue];
    NSLog(@"repeat count : %@",recent.repeatCount );
}

Теперь я хочу 20 лучших посещенных таймов (количество повторов). и тогда я могу добавить их в избранное. подскажите пожалуйста как найти топ 20.

Спасибо

1 Ответ

1 голос
/ 20 декабря 2011

Вам понадобится дескриптор сортировки:

NSSortDescriptor *sortByRepeats = [NSSortDescriptor sortDescriptorWithKey:@"repeatCount" ascending:NO];

Тогда вы сможете использовать его при создании запроса на выборку:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];   NSEntityDescription *entityDescription = [NSEntityDescription                                   entityForName:@"Recent" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entityDescription];   
[fetchRequest setFetchLimit:20];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortByRepeats]];
...