我正在研究NSFetchedResultController
数据的排序。我需要按名字对数据进行排序。但是,有些条目没有名字。
我需要“无名字”对象才能显示在列表的底部,而不是顶部。使用当前代码,当我按名字对列表进行排序时,“无名字”单元格位于顶部。
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Contacts"];
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"firstName" ascending:YES]];
_FRC = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:MOC
sectionNameKeyPath:nil cacheName:nil];
_FRC.delegate = self;
答案 0 :(得分:5)
首先,你是在谈论“空白”,因为在一个字符串中有空格或'nil'这是一个没有任何价值的属性?
提出的想法是添加名为BOOL
的{{1}},然后先在hasFirstName
上排序,然后按hasFirstName
排序。
答案 1 :(得分:-1)
NSSortDescriptor有sortDescriptorWithKey:ascending:comparator:
方法。使用此方法,您可以进行自定义比较并将空项目移动到底部。比较器块可能如下所示:
^NSComparisonResult(NSString *obj1, NSString *obj2) {
if (obj1.length == 0) {
return NSOrderedDescending;
}
if (obj2.length == 0) {
return NSOrderedAscending;
}
return [obj1 compare:obj2];
}