为了学习,我正在制作一个小游戏。
我想对一个可变数组进行排序,为此我在网上看到了几个例子。问题是,我需要对一组字典进行排序。每个字典都包含一个玩家的名字,他完成的时间以及他使用的移动次数。
是否可以对主要数组中的词典进行排序?
如果是的话我会很感激解释。
由于
答案 0 :(得分:0)
当然,你可以,但你必须提供比较器块,如下所示:
NSArray *sortedArray = [startArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSString* aa = [a objectForKey:KEY_USERNAME];
NSString* bb = [b objectForKey:KEY_USERNAME];
return [bb compare:aa];
}];
这将从“startArray”创建一个新的(不可变的)数组,该数组是一个字典数组,其中“KEY_USERNAME”键用于比较2个任意元素。
答案 1 :(得分:0)
你的问题的快速答案是肯定的,你可以对一系列词典进行排序,我会在一瞬间告诉你。但在此之前请允许我说我不推荐这个。基于我从上面的解释中理解的每个玩家有3个特征:名称,时间,计数器。在这种情况下,我没有看到需要一个字典数组,我看到你要么有一个数组字典,其中每个数组都有你想要的3个项目,或者你可以为你的播放器创建一个对象(更推荐)并且你将得到一个最简单的对象数组,然后你将轻松地对你的对象进行排序......
要回答您的问题,一种方法是使用sortedArrayUsingFunction
的{{1}}方法,您可以在其中调用它来请求这样的自定义排序功能:
NSArray
现在您可以编写自己的排序功能,根据需要投射对象。这是一个例子:
mySortedArray = [myArray sortedArrayUsingFunction:myCustomSort context:nil];