如何对Core Data中的提取进行排序

我正在获取数据以在UITableView中显示它,我执行获取但我想按创建日期或任何排序方法对它们进行排序。

这是方法:

-(NSArray *) lesStations { NSManagedObjectContext *moc = [[AppDelegate sharedAppDelegate]managedObjectContext]; NSFetchRequest *fetch = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"Station" inManagedObjectContext:moc]; [fetch setEntity:entity]; NSError *error; NSArray *result = [moc executeFetchRequest:fetch error:&error]; if (!result) { return nil; } return result; } 

这应该工作

 -(NSArray *) lesStations { NSManagedObjectContext *moc = [[AppDelegate sharedAppDelegate]managedObjectContext]; NSFetchRequest *fetch = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"Station" inManagedObjectContext:moc]; [fetch setEntity:entity]; NSError *error; NSArray *result = [moc executeFetchRequest:fetch error:&error]; if (!result) { return nil; } NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:"creationDate" ascending:YES]; NSArray *sortedResults = [result sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]]; [sort release]; return sortedResults; } 

您有两个选项:对结果进行排序或对结果进行NSArray排序:
NSFetchRequest可以设置为NSSortDescriptorNSArray

 NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"place" ascending:NO]; //the key is the attribute you want to sort by [fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]]; 

您还可以对返回的NSArray排序(请参阅以sortedArray...开头的NSArray所有实例方法sortedArray...
我建议在使用CoreData时使用第一种方法。 第二个是在使用数组时提供信息……

您可以通过为fetch设置sortDescriptors来对获取结果进行排序,例如

 fetch.sortDescriptors = [NSArray arrayWithObjects:[[NSSortDescriptor alloc] initWithKey: ascending: selector:], nil]; NSError *error; NSArray *result = [moc executeFetchRequest:fetch error:&error];