排序描述符中的@count 在 Objective-C 中给出 'not key value compliant' 错误
@count in sort descriptor giving 'not key value compliant' error in Objective-C
我正在尝试根据给定属性的给定值出现的次数对数组进行排序。
为此,我使用了以下代码:
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title.@count" ascending:NO];
NSArray *descriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
NSArray *sortedArray = [results sortedArrayUsingDescriptors:descriptors];
然而,当代码编译时,在运行时它给出了错误:
'[<__NSCFNumber 0xb00000000004e293> valueForUndefinedKey:]: this class is not key value coding-compliant for the key @count.'
我做错了什么?
编辑:
有问题的数组实际上由核心数据提取的结果组成,如下所示:
self.managedObjectContext = [Model sharedInstance].managedObjectContext;
[fetchRequest setPredicate:pred];
// fetchRequest.resultType = NSDictionaryResultType;
NSArray<Articles*> *results = [self.managedObjectContext executeFetchRequest:fetchRequest
error:&error];
if ([results count]>=1) {
您可以使用 +\[NSSortDescriptor sortDescriptorWithKey:ascending:comparator:\]
。这需要一个可以实现您想要的任何算法的块。您可以在排序操作之前从 [results valueForKey:@"title"]
创建一个 NSCountedSet
并让比较器块捕获它。这样,您就有了一种简单而廉价的方法来获取给定 object 的标题的计数。问题是如何重新生成计数集 if/when object 的更改(如果可以的话)。
我正在尝试根据给定属性的给定值出现的次数对数组进行排序。
为此,我使用了以下代码:
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title.@count" ascending:NO];
NSArray *descriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
NSArray *sortedArray = [results sortedArrayUsingDescriptors:descriptors];
然而,当代码编译时,在运行时它给出了错误:
'[<__NSCFNumber 0xb00000000004e293> valueForUndefinedKey:]: this class is not key value coding-compliant for the key @count.'
我做错了什么?
编辑:
有问题的数组实际上由核心数据提取的结果组成,如下所示:
self.managedObjectContext = [Model sharedInstance].managedObjectContext;
[fetchRequest setPredicate:pred];
// fetchRequest.resultType = NSDictionaryResultType;
NSArray<Articles*> *results = [self.managedObjectContext executeFetchRequest:fetchRequest
error:&error];
if ([results count]>=1) {
您可以使用 +\[NSSortDescriptor sortDescriptorWithKey:ascending:comparator:\]
。这需要一个可以实现您想要的任何算法的块。您可以在排序操作之前从 [results valueForKey:@"title"]
创建一个 NSCountedSet
并让比较器块捕获它。这样,您就有了一种简单而廉价的方法来获取给定 object 的标题的计数。问题是如何重新生成计数集 if/when object 的更改(如果可以的话)。