首先更新的结果,建立一个核心数据实体有: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:参数:在列表所在。
感谢您的回复。我试过使用:NSExpression * countNameExpression = expressionForFunction:arguments:w/count:然后执行获取请求,但这只是给我总数。关于我在做什么的任何想法都是错误的? – 2010-09-01 21:29:48
您是否曾使用NSPredicate过滤特定日期和搜索项的内容? 我在编辑答案,在谓词中包含“AND”语句 – elcool 2010-09-02 01:34:58
这就是问题所在。我没有搜索字词。我只希望所有搜索条件都按照它们发生的时间顺序排列。 – 2010-09-02 17:54:49