在IBAction上排序NSFetchedResultsController

时间:2012-02-06 14:30:39

标签: uitableview sorting nsfetchedresultscontroller nssortdescriptor

我想在Tableview中对数据进行排序。我有带有IBAction的UIButton来调用这种类型 我创建了一个包含sortKey的字符串。我正在设置密钥并再次调用fetchedResultsController,以对tableview进行排序。

问题是,没有调用fetchedResultsController方法,并且排序不起作用  这是我的代码:

- (IBAction) actionSortCardColor:(id) sender {
    XLog(@"");
    sortString = @"colorOrder";
    [self fetchedResultsController];

    [self actionRemoveSortView:sender];
}    

这里是我的fetchedResultsController方法:

- (NSFetchedResultsController *)fetchedResultsController
{

[...]


NSPredicate *inboxPred = [NSPredicate predicateWithFormat:@"archived == 0"];

// Set the batch size to a suitable number.
[fetchRequest setFetchBatchSize:20];
[fetchRequest setPredicate:inboxPred];

XLog(@"sortString: %@", sortString);
if (sortString == nil) {
    sortString = [[NSString alloc] initWithString:@"sortingOrder"];
}

NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"setTitle" ascending:YES] autorelease];
NSSortDescriptor *sortDescriptor2 = [[[NSSortDescriptor alloc] initWithKey:sortString ascending:YES] autorelease];
NSArray *sortDescriptors = [[[NSArray alloc] initWithObjects:sortDescriptor, sortDescriptor2, nil] autorelease];

[fetchRequest setSortDescriptors:sortDescriptors];

[...]
}  

1 个答案:

答案 0 :(得分:1)

您让表格视图了解这些更改的位置是什么?您需要重新加载表视图实例[tableView reloadData];

的数据

当您将__fetchedResultsController设置为nil时,它无法使用任何更改来更新UITable视图,因为它不在范围内。