Его трудно сделать ноль в последний раз по возрастанию. Мой подход был бы одним из: (a) блочного NSComparator
, который вы пишете, который заставляет нулевые значения последними, или (b) использовать NSSortDescriptor
, но временно или постоянно заменяет нули максимальным значением, которое выходит за пределы ваших данных, или (c) используйте NSSortDescriptor
, сортируйте просто, затем переместите нули в конец вручную.
Если вы не замужем за дескриптором рода, я бы с идеей сравнения (а) следующим образом: (предполагаю, что вы сортировки PFObjects на основе какого-либо свойства) ...
NSComparator comparator = ^(PFObject *objA, PFObject *objB) {
id someProperyA = objA[@"someProperty"];
id someProperyB = objB[@"someProperty"];
// two nulls are equal
if (!somePropertyA && !somePropertyB) return NSOrderedSame;
// any single null is bigger in your world, so sort it last
if (!somePropertyA) return NSOrderedDescending;
if (!somePropertyB) return NSOrderedAscending;
// otherwise use compare, or whatever you were planning to use
// with your NSSortDescriptor
return [somePropertyA compare:somePropertyB];
};