按自定义对象的子对象属性对数组进行排序?

时间:2014-05-08 17:12:47

标签: objective-c nsarray nssortdescriptor pubnub

我有一组自定义对象PNMessage objectsPNMessage对象有一个属性是另一个名为PNDate的对象,PNDate有一个名为date的属性,我想按{{1}对我的数组进行排序}&n;的日期属性。

我想我可能会使用排序描述符,但我不知道如何向下钻取属性对象PNDate,然后按PNDate日期属性排序。

这是一个代表:

PNDate - 我的阵列 myArray - 我的数组中的自定义对象。 PNMessage - 主要自定义对象的属性(也是对象)。 PNDate - 这是我想要分类我的阵列的财产。

这可能吗?

这就是我尝试的但是我知道它错了,我似乎无法深入探讨如何深入到该属性来对数组进行排序:

date

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

您可以使用比较器块,而不是使用排序描述符。

NSArray *sortedEventArray =
[self.chatHistory sortedArrayUsingComparator:^NSComparisonResult(PNMessage *m1, PNMessage *m2) {
    return [m1.date compare:m2.date];
}];

请注意,PNDate类必须有一个名为-[PNDate compare:]的实例方法,该方法返回NSComparisonResult才能生效。