我有一个NSArray
包含几个NSDictionary
实例。NSDictionary
在其他字段中,每个都有一个名为的对象rating
和一个numberOfVotes
(两者都是int
)。如何对数组进行排序,使其按rating
/排序numberOfVotes
?更一般地说,我可以通过执行上述操作对其进行排序吗?或者将每个操作的值添加到每个对象NSDictionary
然后按此排序会更好吗?
谢谢
编辑 - 我添加了以下内容。仍然没有正确排序。一个问题:这是否适用于我的数组中的 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;
}];