我有一個NSArray
包含幾個NSDictionary
實例。除其他字段外,每個NSDictionary
都有一個名爲rating
的對象和一個numberOfVotes
(均爲int
)。如何對數組進行排序,以便按rating
/numberOfVotes
排序?更一般地說,我可以通過執行上述操作來對其進行分類嗎?或者,將每個操作的值添加到每個NSDictionary
的另一個對象然後按此排序?NSArray按功能排序
謝謝
編輯 - 我已添加以下內容。仍然沒有正確排序。一個問題:這個數組是否應該適用於2個以上的對象。 (對象數量會有所不同)
[sortedArray sortedArrayUsingComparator:^NSComparisonResult(id dict1, id dict2)
{
MyObj *obj1 = (MyObj *)dict1;
MyObj *obj2 = (MyObj *)dict2;
int rating1 = obj1.rating.intValue;
int rating2 = obj2.rating.intValue;
int number1 = obj1.number_of_votes.intValue;
int number2 = obj2.number_of_votes.intValue;
double key1 = ((double)rating1)/number1;
double key2 = ((double)rating2)/number2;
if (key1 < key2)
{
return NSOrderedDescending;
}
if (key2 < key1)
{
return NSOrderedAscending;
}
return NSOrderedSame;
}];
請參閱我的更新回答 –
@AndreiFilip是的,這將適用於必要的項目。但是,這不會*排列陣列;它會返回數組的一個有序副本。 – dasblinkenlight
它令人敬畏的cos它使用塊,ftw! ;-) –