Я замечаю, что это довольно старо, но люди все еще сталкиваются с этим (я сделал)
Пост Адриана Шенига был хорош. Я нашел это полезным для основы, но вы должны делать это каждый раз, когда вы хотите получить доступ к набору работников. Это очень неэффективно!
Вместо этого лучше выполнять сортировку каждый раз, когда вы вставляете новый объект, а затем сохраняете его как набор в CoreData. Это означает, что каждый раз, когда вы вызываете CoreData, рабочие будут заказаны.
Я сделал это для своей системы, используя категорию для NSManagedObject (Worker + Methods.h). Здесь у меня есть метод init для нового Worker
// Worker+Methods.m
+(Worker *)newWorkerWithFirstname:(NSString *)firstName department:(Department *)department managedContext:(NSManagedObjectContext *)context {
Worker *w = [NSEntityDescription insertNewObjectForEntityForName:@"Worker" inManagedObjectContext:context];
w.firstName = firstName;
w.department = department;
[department orderWorkers];
return s;
}
//Department+Methods.m
-(void)orderServices {
NSSortDescriptor *sortNameDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES] autorelease];
self.workers = [[NSSet alloc] initWithArray:[self.workers sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortNameDescriptor]]];
}
Очевидно, что это неэффективно, когда вы добавляете много рабочих, но вы можете просто переместить [Department OrderWorkers]; произойдет после того, как все рабочие будут добавлены.