2012-06-15 113 views
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; 

} 

回答

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; 

} 
+0

非常感谢你..它的岩石:) – Tidane

+0

很高兴我能帮助:) – jerrylroberts

0

您可以按设定取,例如sortDescriptors撷取结果

fetch.sortDescriptors = [NSArray arrayWithObjects:[[NSSortDescriptor alloc] initWithKey: ascending: selector:], nil]; 
NSError *error; 
NSArray *result = [moc executeFetchRequest:fetch error:&error]; 
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(请参阅NSArray的所有实例方法,从sortedArray...开始
我建议在使用CoreData时使用第一种方法。第二个是使用数组时只是信息......

相关问题