2016-11-22 21 views
0

我有一個NSArray與具有NSNumber屬性的自定義類對象。我試圖從數組中獲取最小值&。所以這是我的代碼:如何從具有自定義類對象的NSArray中查找最小值和最大值?

MyClass *minObj = [filteredArray valueForKeyPath:@"@min.self.height"]; 
MyClass *maxObj = [filteredArray valueForKeyPath:@"@max.self.height"]; 

這工作,我可以得到一個最小值和最大值,但NSNumber類型。所以minObjmaxObj將是一個數字,而不是MyClass類型。

有沒有一種很好的方法找出相同的並得到MyClass而不是NSNumber

P.S.可以有多個相同的值,可以是最小值或最大值。

回答

1

只需編寫代碼即可。例如(直接鍵入答案,期待輕微錯別字):

MyObj *minObj = filteredArray[0]; 
for(MyObj *candidate in filteredArray) 
    if([candidate.height compare:minObj.height] == NSOrderedDescending) 
     minObj = candidate; 

當然,你可以既最小和最大使用在你的陣列單程找到。

HTH

+0

「filteredArray」是否需要排序? – Hemang

+1

閱讀代碼,它使用什麼算法(它是如何工作的)?它是否僅在數組排序後才起作用?如果你自己解決問題,你會更好地理解這個答案。 – CRD

相關問題