避免使用NSSortDescriptor排序

时间:2011-02-28 05:06:13

标签: sqlite sorting nssortdescriptor

我使用sqlite数据库详细信息显示在tableview中。使用NSSortDescriptor我可以按升序或降序显示表行内容。请帮助我避免排序过程并在输入时显示tableview中的内容。 这是我正在使用的代码。它通过排序数据很好地工作,帮助我避免排序。              -

 (NSFetchedResultsController *)fetchedResultsController {
          // Set up the fetched results controller if needed.
 if (fetchedResultsController == nil) {
    // Create the fetch request for the entity.
 NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    // Edit the entity name as appropriate.
 NSEntityDescription *entity = [NSEntityDescription entityForName:@"book"   inManagedObjectContext:managedObjectContext];
    [fetchRequest setEntity:entity];     
    // Edit the sort key as appropriate.
  NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]            initWithKey:@"name" ascending:YES];
  NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
    [fetchRequest setSortDescriptors:sortDescriptors];
    // Edit the section name key path and cache name if appropriate.
    // nil for section name key path means "no sections".
  NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"];
    aFetchedResultsController.delegate = self;
    self.fetchedResultsController = aFetchedResultsController;
  NSLog(@"inside table view %@",aFetchedResultsController);     
    [aFetchedResultsController release];
    [fetchRequest release];
    [sortDescriptor release];
    [sortDescriptors release];
    }
  return fetchedResultsController;
    }    

1 个答案:

答案 0 :(得分:1)

我假设您使用sql lite的核心数据。如果是这样,你应该使用NSFetchedResultsController,有许多如何在网上使用它的例子。

NSFetchedResultsController需要一个排序描述符,如果您希望您的值无序,请记住您正在根据对控制器获取结果中元素的indexPath引用来填充表视图(-objectAtIndexPath :)。

因此,您可以使用行数低于行数的随机索引路径返回