0

我正在制作一个 Iphone 应用程序,并试图根据用户点击特定按钮在我获取的结果控制器上执行排序。当用户单击按钮时,我输入了下面显示的代码,但是我收到一条错误消息

-[NSSortDescriptor 计数]:无法识别的选择器发送到实例 0x6bc3250

*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-。如何解决此问题并根据用户按钮单击对数据进行排序?

- (IBAction)btnValue:(id)sender {
    self.model.frc_Work.delegate = self;

    self.model.frc_Work.fetchRequest.sortDescriptors = [NSSortDescriptor sortDescriptorWithKey:@"Value" ascending:YES];

    [NSFetchedResultsController deleteCacheWithName:@"Work"];

    NSError *error = nil;
    [self.model.frc_Work performFetch:&error];
}
4

1 回答 1

4

您应该收到一个编译器警告,指出您将错误类型的对象分配给sortDescriptorsfetch 请求的属性,该属性需要一个NSArray,而不是NSSortDescriptor.

您可以改为这样分配它:

NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"Value" ascending:YES];
self.model.frc_Work.fetchRequest.sortDescriptors = [NSArray arrayWithObject:sortDescriptor];

此属性采用数组的原因是,您可以指定一个排序描述符列表,以连续应用于某些键可能具有相同值的值(例如,按姓氏排序,如果姓氏相等,则按名字排序)。

于 2012-12-01T21:36:32.223 回答