2014-05-08 163 views
2

我有一組自定義對象,PNMessage objectsPNMessage對象有一個屬性,它是另一個名爲PNDate的對象,PNDate有一個屬性date,我想按照PNDate的date屬性對我的數組進行排序。通過自定義對象的子對象屬性對數組進行排序?

我想我可以使用排序描述符,但我不知道如何鑽取屬性對象PNDate,然後按PNDate日期屬性進行排序。

這裏是一個表示:

myArray - 我陣列 PNMessage - 在我的數組自定義對象。 PNDate - 主要自定義對象的屬性(也是一個對象)。 date - 這是我想要用於放置我的陣列的財產。

這可能嗎?

這是我嘗試過,但我知道這是錯的,我似乎無法換我圍繞如何深入到該屬性頭的數組進行排序:

NSSortDescriptor *dateDescriptor = [NSSortDescriptor 
                sortDescriptorWithKey:@"date" 
                ascending:YES]; 
       NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor]; 
       NSArray *sortedEventArray = [self.chatHistory 
              sortedArrayUsingDescriptors:sortDescriptors]; 

任何幫助將不勝感激!

回答

3

與其使用排序描述符,您可以使用比較器塊。

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

注意,PNDate類必須有一個實例方法叫做-[PNDate compare:],爲了這個工作返回NSComparisonResult

+0

謝謝,這可能是我正在尋找。我可以爲您添加一個可以添加到PNDate實現文件的compareTo方法的示例嗎? – DominicanCoder

+0

'PNDate'包裝了一個'NSDate'對象嗎?如果是這樣,它可以簡單地調用' - [NSDate compare:]'。 – pwc

+0

不,實際上,PNDate從NSObject繼承。 – DominicanCoder

相關問題