我有一个名为 Item 的核心数据实体,它有一个日期字段。我想检索按日期分组的数据库中的所有项目,例如:
Item one, date: 1/1/11
Item two, date: 1/1/11
Item three, date: 1/2/11
应该返回:
(Item one, Item two), (Item three)
有人能告诉我最好的方法是什么吗?谢谢!
您可以做的最好的事情是订购它们,然后根据相同的日期创建分组。(注意:虽然我适当地使用了真实的函数名称,但这只是伪代码。自己填补空白,或者如果您需要更多帮助,请询问)
NSFetchRequest *request=[NSFetchRequest alloc init];
NSSortDescriptor *sort=[NSSortDescriptor sortDescriptorWithKey: @"foo" ascending:YES];
[request setSortDescriptors:[NSArray arrayWithObject:sort]];
//Fetch
NSMutableArray* master=[NSMutableArray array];
NSMutableArray* current=[NSMutableArray array];
NSDate *lastDate=[fetchedObjectsArray objectAtIndex:0].date;
forin(ManagedObjectSubclass *foo in fetchedObjectsArray)
{
//You'll need to figure out an algorithm to determine if two dates are the same.
//This code WILL NOT work as written.
if(foo.date == lastDate)
{
[current addObject:foo];
}
else
{
[master addObject:current];
current=[NSMutableArrayArrwayWithObject foo];
}
}
[master addObject:current];
这应该足以让你开始。