你的问题很笼统,但我会尽力给你一些提示。
当你使用NSFetchRequest
类可以指定排序描述符。
来自苹果文档:
排序描述符的数组(实例NSSortDescriptor
) 那
指定返回的对象应如何排序,例如
先姓后名。
在这里你可以找到一个简单的例子核心数据片段文档
NSManagedObjectContext *context = <#Get the context#>;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"<#Entity name#>"
inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"<#Sort key#>"
ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSError *error = nil;
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
// Handle the error
}
// release allocated objects if you don't use ARC
Where
是您要检索的实体的名称,例如Manager
.
是请求将用于订购的密钥的名称,例如name
是一个属性Manager
entity.
所以,在我的例子中:
NSSortDescriptor *sortByName = [[NSSortDescriptor alloc] initWithKey:@"name"
ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortByName, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
Since setSortDescriptors:
设置排序描述符数组,您可以根据您想要的顺序指定多个键。例如指定订购依据name
and salary
。排序描述符按照它们在 sortDescriptors 数组中出现的顺序应用。所以,在我的例子中,首先name
然后通过salary
.
所以,在我的例子中,它可能会变成
NSSortDescriptor *sortByName = [[NSSortDescriptor alloc] initWithKey:@"name"
ascending:YES];
NSSortDescriptor *sortBySalary = [[NSSortDescriptor alloc] initWithKey:@"salary"
ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortByName, sortBySalary, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
希望有帮助。
Edit
Since fetchedObjects
包含NSManagedObject
(我想您没有更改请求的结果类型)您需要像下面这样进行迭代:
for(NSManagedObject* currentObj in fetchedObjects) {
NSLog(@"Print the name %@", [currentObj valueForKey:@"name"]);
}
因此,您需要通过键值编码来访问属性或关系。为了让你的生活更轻松,你可以考虑创造NSManagedObject
您创建的实体的子类,例如为 ios 组织核心数据.