在目标中排序NSArray的更好方法 - C

问题描述:

G'Day Everyone,在目标中排序NSArray的更好方法 - C

最近我开始学习iOS开发。我通过学习Objective C语言开始了我的学习过程。在我熟练掌握Java之前,在自然的计算机意义上说“Java是我的第一语言”。

因此,当我在Obj-C中看到非常长的方法时,我遇到了很多困难,这意味着要做很简单的事情。让我分享一些代码,这是非常长的只是排序的NSArray内容升序和降序(按字母顺序)

排序的NSArray在升序A - Z


[dataToShow sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; // dataToShow is my NSArray 

排序的NSArray在降序排列Z - A


NSSortDescriptor* sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:nil ascending:NO selector:@selector(localizedCompare:)]; 
[dataToShow sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]; // dataToShow is my NSArray 

现在有没有更好的方法,通过更好的方式,我的意思是实现相同结果的更短途径?因为我很天真,我想知道是否还有其他方法可能与上述方法一样长,但会以更好的方式排序。

谢谢

+0

你想弄清楚吨如何用更短的代码或者更短的处理时间做更容易? – bryanmac

+4

我不明白你的问题。你提供的代码看起来很好。我已经在Java世界工作了很多年,Objective C工作在最后2年,这些例子对我来说看起来很好。 – drekka

+0

只是一个注释:'localizedCaseInsensitiveCompare:'使用当前的语言环境进行正确的排序,如果您期待ASCII顺序,则有时会获得“奇怪”的结果。 –

适应它。在Objective-C中,通常甚至希望拥有长的描述性方法名称。当然你可以用自己的方法或宏来包装你经常使用的东西,但是我不会偏离Cocoa命名风格,因为它会让你的代码难以阅读。

请参阅Coding Guidelines for Cocoa了解一些背景知识。

我建议你适应blocks

NSArray* sortedArray =[array sortedArrayUsingComparator: ^(id thing1, id thing2) 
{ 
    /* return NSComparisonResult following conventions of strcmp */ 
}]; 

它没有什么比这