微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iphone – 如何在核心数据中执行此MySQL查询?

我如何在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 举报,一经查实,本站将立刻删除。

相关推荐