如何找到前20个访问过的项目以将其添加为收藏夹

时间:2011-12-20 07:41:06

标签: iphone objective-c ios core-data nsfetchrequest

我正在使用核心数据。 因为我最近访问过的项目如下。

//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 个答案:

答案 0 :(得分:1)

你需要一个排序描述符:

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]];