我正在尝试创建一个包含两个不同部分的UITableView
。我知道我可以将它们分组到托管对象的属性上。例如,如果我想按name
分组,我会这样做:
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:_context
sectionNameKeyPath:@"name"
cacheName:@"uploadProperties"];
我返回的分数如:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [[_fetchedResultsController sections] count];
}
但问题是我不想按属性(例如名称)对其进行分组。我想将它们分组为特定值,即一个部分包含pud_id = 0
,另一个部分包含pud_id > 0
。
我怎样才能做到这一点?是否可以使用where子句?或者我可以在托管对象上创建一个属性,并在sectionNameKeyPath
中使用它,例如:
- (BOOL) hasPudZero {
if (self.pud_id == 0)
return YES;
return NO;
}
...
感谢您的投入!
答案 0 :(得分:0)
也许你可以创建一个NSString类型的瞬态属性,它返回两个字符串之一?
- (NSString *)sectionIdentifier
{
[self willAccessValueForKey:@"sectionIdentifier"];
NSString *tmp = [self primitiveValueForKey:@"sectionIdentifier"];
[self didAccessValueForKey:@"sectionIdentifier"];
if (!tmp) {
if (self.pud_id == 0) {
tmp = @"SectionOne";
} else {
tmp = @"SectionTwo";
}
[self setPrimitiveValue:tmp forKey:@"sectionIdentifier"];
}
return tmp;
}
然后在创建NSFetchedResultsController时使用sectionNameKeyPath:@"sectionIdentifier"
。如果put_id的值发生变化,请确保将sectionIdentifier的原始值设置为nil。