如何按类别对NSArray对象进行排序?

时间:2010-09-16 17:34:58

标签: cocoa sorting nsarray

我有一个NSArray对象,它们都是从一个更抽象的类中继承了它们的不同类型。

我想按对象的类类型对数组进行排序。例如:

带有CLASSA CLASSB和CLASS C的NSArray,来自CLASSz

myArray = {C,B,A}

排序myArray降序:{A,B,C}

我看到排序描述符,看起来它是正确的路径,但我正在比较isKindOfClass,它不是属性,因此无法在NSSortDescriptiors中使用。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

嗯,我看到的最大障碍是你可能需要在Class个对象上使用自定义属性,你可以将其用作NSSortDescriptor的关键字。不幸的是,没有真正的方法可以将方法/类别添加到Class个对象。

所以我可能会做的是使用NSStringFromClass()Class个对象转换为字符串,然后使用NSString类别添加自定义比较器方法(类似compareToClass: })将字符串转换回Class,进行子类确定,然后返回适当的排序常量。

从那里,您可以使用NSArray的{​​{1}}方法让它们按顺序排列。