NSSortDescriptor Nil Objects Parse

时间:2015-08-20 14:44:44

标签: ios objective-c parse-platform nssortdescriptor

我在我的应用程序中使用Parse,在获取对象时,我需要使用NSSortDescriptor。我可以通过特定的字段/属性进行排序,但是该排序字段为nil的任何对象都会在结果中排​​在第一位。

我可以拥有它,以便排序字段中的nil对象最后出现吗?

感谢。

1 个答案:

答案 0 :(得分:1)

很难让零排在最后。我的方法之一是:(a)你编写的基于块的NSComparator强制最后的空值,或者(b)使用NSSortDescriptor,但暂时或永久地用最大值替换空值为& #39; s超出数据范围,或(c)使用NSSortDescriptor,简单排序,然后手动将空值移到末尾。

如果您没有与排序描述符结合,我会按照以下比较思路(a):(猜测您根据某些属性对PFObject进行排序)...

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];
};