我如何在Core Data中执行相当于此语句的操作?基本上我想得到foo中最常出现的10个列表/它出现的次数.
基本上我将所有用户搜索记录为Core Data中的单个条目.我希望能够选择他们最常搜索的10个项目,然后按照最受欢迎的顺序显示它们.所以我基本上想要这样的东西:
>咩| 10
>海| 8
>盒子| 6
等等…..
感谢您的任何帮助,您可以提供.我还是Core Data的新手.
SELECT foo,
COUNT(foo) AS occurances
FROM bar
GROUP BY foo
ORDER BY occurances DESC
LIMIT 10;
解决方法:
首先,创建一个具有以下内容的核心数据实体:userSearchTerm和userSearchDate.每次搜索完成后都会创建一条记录.
通过声明获取请求来启动代码.
并使用nspredicate按日期过滤:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"UserSearches" inManagedobjectContext:managedobjectContext];
[fetchRequest setEntity:entity];
nspredicate *nameFilter = [nspredicate predicateWithFormat:@"(userSearchDate like[cd] %@) AND (userSearchTerm like[cd] %@)",weekName,termToFind];
[fetchRequest setPredicate:nameFilter];
类似过滤器中的[cd]指定它不区分大小写.您可能还需要根据要使用的日期和格式更改此过滤器
然后,将fetchResultType设置为NSDictionaryResultType:
[fetchRequest setResultType:NSDictionaryResultType];
这将返回您可以使用的字典.
要使用聚合函数,您需要使用NSExpressionDescription
这是一个广泛的代码,我无法为您正确测试,但您可以在此处阅读.在获取特定值部分,它描述了如何执行聚合函数:
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CoreData/Articles/cdFetching.html
有关NSExpression的所有可用聚合函数的引用,请转到函数expressionForFunction:arguments:列表所在的位置.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。