如何对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
可以设置为NSSortDescriptor
的NSArray
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];