情况:带有“联系人”实体和“总和”属性的 CoreData 数据库(正数或负数或 0)
目标:具有 3 个部分的 tableviewcontroller,第一个正面第二个负面第三个(零)“存档”
到目前为止:使用@selector(compare:) 对描述符进行排序(没有谓词,因为需要所有联系人的列表)
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Contact"];
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"moneySum" ascending:YES selector:@selector(compare:)]];
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.database.managedObjectContext
sectionNameKeyPath:@"sectionName"
cacheName:nil];
并在联系实体的类别中:
- (NSString *)sectionName {
[self willAccessValueForKey:@"sectionName"];
NSString *sectionName;
double value = [[self valueForKey:@"moneySum"] doubleValue];
if (value > 0) sectionName = POS_SECTION;
else if (value < 0) sectionName = NEG_SECTION;
else sectionName = ARCHIVE_SECTION;
[self didAccessValueForKey:@"sectionName"];
return sectionName;
}
我现在确实得到了 3 个类别,但它显然是在中间对它们进行排序,而不是在最后。
我考虑在 sortDescriptors 数组中添加第二个 sortDescriptor(在比较之前:一个),但对我来说最直观的方法(isEqualToNumber:) 显然不起作用,因为我无法指定任何参数(@selector (..:))还是我错了?
抱歉,这对整个编码来说都是全新的 :)