我想按标志对数据进行排序。在SQLite函数中“符号”工作正常。但在核心数据中我不能重复这一点。我试过这个:
NSSortDescriptor* signSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"id" ascending:NO comparator:^NSComparisonResult(NSNumber* obj1, NSNumber* obj2) {
int val1 = sign([obj1 integerValue]);
int val2 = sign([obj2 integerValue]);
return (val1 < val2) ? NSOrderedAscending : (val1 > val2) ? NSOrderedDescending : NSOrderedSame;
}];
fetchRequest.sortDescriptors = @[signSortDescriptor];
在iOS 6.1上不起作用(错误:“不支持的NSSortDescriptor(不支持比较器块)”),在iOS 5.1上很好(我认为它在获得结果数组之后排序,但不确定)
试试这个:
NSSortDescriptor* signSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"sign(id)" ascending:NO];
fetchRequest.sortDescriptors = @[signSortDescriptor];
但是得到错误......
答案 0 :(得分:0)
您不需要按标志进行特殊比较。
如果id
是NSNumber
,则只需按id
对值进行排序。它们也将按标志排序,我认为不会对性能产生影响。