2012-06-14 38 views
1

所以我有一個名爲Church的自定義對象的NSArray。在每個教堂裏都有一批羣衆時代。所以教堂裏有一種方法可以計算出與用戶當前時間最接近的質量。按對象方法的結果排序NSArray

-(NSDate *)closestTimeTo:(NSDate *)currentTime 

我希望能夠通過對每個對象方法返回的結果(這是NSDate的),以教會的NSArray的排序。基本上可以獲得按照最近時間和地點排序的大衆分類列表。

我正在使用類別,因爲它是核心數據對象,因此無法將最近的時間存儲爲屬性。我也不認爲將這些值保存到核心數據是一個好主意,因爲這些方法將由於位置服務而不斷調用。

有關如何使用其對象方法的結果對此數組進行排序的任何想法?

回答

2

嘗試以下塊。它會直接幫助(或至少稍作修改)。

NSArray *sortedArray; 
sortedArray = [yourArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) { 
    NSDate *first = [(Church*)a closestTimeTo:currentTime]; 
    NSDate *second = [(Church*)b closestTimeTo:currentTime]; 
    return [first compare:second]; 
}]; 
+0

工作完美!謝謝 – ChrisBorg

+0

@ChrisBorg。歡迎! – Vignesh

1

讓你的類的新方法,該方法的另一個教會類和返回NSOrderedSameNSOrderedAscendingNSOrderedDescending,這取決於你是否希望該對象是第一個或最後。用你的closestTimeTo方法找出來。然後用你的方法使用NSArraysortedArrayUsingSelector呼叫。

+0

聽起來很有趣,我將不得不嘗試這些類型 – ChrisBorg