Ios 对数组中的数据进行排序
我有一个来自我想要排序的核心数据的数组,使用我添加到数据库中的Ios 对数组中的数据进行排序,ios,objective-c,sorting,core-data,Ios,Objective C,Sorting,Core Data,我有一个来自我想要排序的核心数据的数组,使用我添加到数据库中的orderNum字段(Sceneentity) 我提出以下请求以获取数据: NSArray *scenes; NSManagedObjectContext *context = [self managedObjectContext]; NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEnti
orderNum
字段(Scene
entity)
我提出以下请求以获取数据:
NSArray *scenes;
NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Scenes" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSError *error;
scenes = [context executeFetchRequest:fetchRequest error:&error];
return scenes;
如何按照
orderNum
对场景中返回的数据进行排序?使用nssortddescriptor
和orderNum
作为键,并将排序描述符应用于获取请求
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"orderNum" ascending:YES];
[fetchRequest setSortDescriptors:@[ sort ]];
最好的方法是从已排序的数据库中检索数据。检查@Wain的答案
但是,也可以将数据排序到字典的NSArray
:
NSSortDescriptor *sceneDescriptor = [[NSSortDescriptor alloc] initWithKey:@"orderNum" ascending:YES];
NSArray * sortDescriptors = [NSArray arrayWithObject: sceneDescriptor];
NSArray *sortedArray = [scene sortedArrayUsingDescriptors:sortDescriptors];
NSLog(@"sortedArray = %@", sortedArray);
是的,这是正确的方法-值得注意的是,让SQL引擎作为获取的一部分进行排序将比检索数据然后在代码中进行排序更快、更高效。特别是如果您在SQL land中对具有索引的列进行排序…您知道如何访问SQL引擎吗?您无法通过核心数据直接访问SQL。调用executeFetchRequest:
将获取请求转换为SQL并(私下)运行。为什么在调用数据库时不进行排序?这是我正在维护的预构建应用程序。我无法确定在数据库中调用此表的查询的位置。就像我修改SQL以按orderNum排序一样。你知道,我如何在程序中跟踪它吗?@user3473089如果你现在正在维护这段代码,那么最重要的事情就是阅读。