我想按周和日期对核心数据条目进行分组。我有一个名为WorkEntry
的核心数据实体,其中包含weekBegin
和date
的属性。在这些中,我保存了保存日期以及与该日期对应的一周的第一天。我使用weekBegin
作为节名称,我希望单元格显示条目没有重复的日期。我使用http://felipecypriano.com/2011/09/21/core-data-how-to-do-a-select-distinct/作为指南。这是我的代码:
使用returnsDistinctResults
获取请求:
- (NSFetchRequest *)workDayFetchRequest {
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"WorkEntry"];
CoreDataStack *coreDataStack = [CoreDataStack defaultStack];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"WorkEntry" inManagedObjectContext:coreDataStack.managedObjectContext];
fetchRequest.entity = entity;
fetchRequest.propertiesToFetch = [NSArray arrayWithObject:[[entity propertiesByName] objectForKey:@"weekBegin"]];
fetchRequest.returnsDistinctResults = YES;
fetchRequest.resultType = NSDictionaryResultType;
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"weekBegin" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
NSError *error = nil;
self.distinctResults = [coreDataStack.managedObjectContext executeFetchRequest:fetchRequest error:&error];
return fetchRequest;
}
给了我一个名为distinctResults
的数组,我在其中使用:
CellForRowAtIndexPath
:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.textLabel.text = [self.distinctResults objectAtIndex:indexPath.row];
return cell;
}
但我有一种可能不对的感觉。当我切换到应用程序中的表视图时,它会崩溃并出现以下异常:
-[NSKnownKeysDictionary1 length]: unrecognized selector sent to instance 0x8c7c8a0
我真的很感激你们能给予的任何帮助。我试图解决这个问题一直在疯狂。感谢
答案 0 :(得分:0)
问题可能在于您在控制器中声明distinctResults属性的方式。 如果使用弱指针,它可能会被释放。