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

时间:2012-06-15 13:58:28

标签: iphone ios xcode 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;

}

3 个答案:

答案 0 :(得分:5)

这应该有效

-(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;

}

答案 1 :(得分:3)

您有两种选择:对结果进行排序或对NSArray进行排序,结果如下:
NSFetchRequest可以设置NSArray NSSortDescriptor

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

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

答案 2 :(得分:0)

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

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