2

我正在获取数据以在 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;

}
4

3 回答 3

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;

}
于 2012-06-15T14:17:18.147 回答
3

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

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

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

于 2012-06-15T14:08:33.453 回答
0

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

fetch.sortDescriptors = [NSArray arrayWithObjects:[[NSSortDescriptor alloc] initWithKey: ascending: selector:], nil];
NSError *error;
NSArray *result = [moc executeFetchRequest:fetch error:&error];
于 2012-06-15T14:05:48.140 回答