ios - 排序描述符中的 @count 在 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:\]
. 这需要一个可以实现您想要的任何算法的块。您可以在排序操作之前创建一个NSCountedSet
from[results valueForKey:@"title"]
并让比较器块捕获它。这样,您就有了一种简单而廉价的方法来获取给定对象标题的计数。问题是如果/当对象更改时(如果可以),如何重新生成该计数集。
推荐阅读
- wordpress - 如何在结帐页面上隐藏/删除特定产品的附加结帐字段?
- sql - TypeError:字节类型的对象不能使用 pd.read_sql 进行 JSON 序列化
- android - 测试这个片段的最佳实践是什么?
- c# - 在 WPF (C#) 中逐步运行 Powershell 脚本文件
- mysql - MySQL 是否会原地轮换日志?
- java - 获取返回首字母的方法
- list - 列表中的额外空间(左侧和右侧)SwiftUI
- blockchain - 如何在 Exchange linux 中为 XRP RIPPLED 节点进行设置
- html - 如何使用 XPath 在 HTML 中搜索标题?
- python - 如何在 Python 中模拟已挂载的分区