对NSManaged Object数组进行排序

时间:2012-01-03 09:35:42

标签: ios cocoa core-data

我从核心数据中获取了一些记录,并在表格视图中显示。所有这些记录都有11个属性。现在在我的tableview演示文稿中,在标题上我添加了一个用于所有这些属性的按钮。单击该按钮,我想根据该属性对记录进行排序。 我尝试使用排序描述符,但它不起作用。 我的代码是这样的: -

- (IBAction)sortButton:(id)sender {
// tags are from 100 to 111
UIButton *sortButton = (UIButton*)sender;
NSString *sortDescriptorKey = nil;
// create sort descriptor key according to the tag value
if (sortButton.tag == 100 )  sortDescriptorKey = [NSString stringWithString:@"reportID "];
....
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:sortDescriptorKey ascending:YES];
[self.recordArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
[sortDescriptor release];
[self.tableView reloadData];
}

但是,此代码根本不会改变任何排序。 我错过了什么,或者还有其他方法可以做到。

1 个答案:

答案 0 :(得分:1)

问题在于这个陈述

[self.recordArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

这将返回recordArray的已排序副本,但您没有使用它。您应该将其分配回recordArray,以便在重新加载时tableView正确更新。将其更改为:

self.recordArray=[self.recordArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];