2015-08-20 2 views
1

Я использую Parse в своем приложении, и, извлекая мои объекты, мне нужно использовать NSSortDescriptor. Я могу сортировать через определенное поле/свойство, но любые объекты, в которых это поле сортировки равно nil, входят в результаты.NSSortDescriptor Nil Objects Parse

Могу ли я получить его так, чтобы нулевые объекты в поле сортировки были последними?

Спасибо.

ответ

1

Его трудно сделать ноль в последний раз по возрастанию. Мой подход был бы одним из: (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]; 
}; 

 Смежные вопросы

  • Нет связанных вопросов^_^