我有一个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! ;-) –