根据Objective-C中的评论数量对来自核心数据的FetchedObjects数组进行排序

时间:2019-02-26 16:21:06

标签: ios objective-c core-data nssortdescriptor

我想按给定书的阅览次数对从Core Data获取的评论进行排序。实体是评论,评论实体具有属性bookid。因此对于下表:

reviewid|bookid|review
1|1|This is a great novel...
2|1|Wonderful novel
3|2|Ok biography.
4|3|Horrible romance

我想返回一个顶部有bookid = 1的数组,因为它有两个评论,而其他评论有一个。

如何使用NSSortDescriptor做到这一点?

我相信,您可以使用以下代码在获取后对数组进行处理,但似乎应该可以直接在核心数据结果中进行处理

NSEntityDescription * entity = [NSEntityDescription entityForName:@"Parent" inManagedObjectContext:self.managedObjectContext];

NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:reviews];
NSError *error;
NSArray *results = [self.managedObjectContext executeFetchRequest:request error:&error];

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"bookid.@count" ascending:NO];
NSArray *descriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
NSArray *sortedArray  = [results sortedArrayUsingDescriptors:descriptors];

1 个答案:

答案 0 :(得分:1)

您可以设置NSFetchRequest的排序描述符。

request.sortDescriptors = @[sortDescriptor]

阅读文档以获取更多信息。 https://developer.apple.com/documentation/coredata/nsfetchrequest/1506262-sortdescriptors