我在 NSSet 中有数据,我需要将其放入 NSArray。
我需要自己对其进行排序(同样,这来自 Core Data)还是可以按排序顺序将其取出?
NSFetchRequest
通过将属性设置为ssortDescriptors
数组,可以在使用 an 检索数据时指定排序。NSSortDescriptor
但是,如果您已经拥有它NSSet
并且不想发出另一个 fetch 请求,您可以使用:
[[theSet allObjects] sortedArrayUsingDescriptors:sortDescriptors];
NSArray
它会在您调用时创建一个临时allObjects
数组,然后创建另一个排序数组,因此它不是 100% 有效的,但对于合理大小的数据集,开销应该可以忽略不计(当然低于排序的成本)。
实际上,我错了 - NSSet 也有sortedArrayUsingDescriptors:
方法。因此,您可以一次调用[theSet sortedArrayUsingDescriptors:descriptors]
并完成所有操作。
你必须自己整理它,但这并不难......
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Sprocket" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"sortVariable" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
NSError *error;
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
self.sprocketArray = mutableFetchResults;
[sortDescriptors release];
[sortDescriptor release];
[mutableFetchResults release];
[request release];