在Objective - C中更好地分类NSArray的方法

时间:2011-08-30 23:40:47

标签: iphone objective-c ios4 sorting

G'Day Everyone,

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

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

按升序A-Z

排序NSArray
[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

现在有更好的方法吗?通过更好的方式,我的意思是更短的方式来实现相同的结果?由于我天真,我想知道是否有任何其他方法可能与上述方法一样长,但以更好的方式进行排序。

谢谢

2 个答案:

答案 0 :(得分:4)

习惯它。 Objective-C中常见且甚至需要具有长的描述性方法名称。当然,您可以在自己的方法或宏中包装经常执行的操作,但我不会偏离Cocoa命名样式,因为它会使您的代码更难以为其他人阅读。

有关背景信息,请参阅Coding Guidelines for Cocoa

答案 1 :(得分:1)

我建议你对blocks感到满意。

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

它没有那么容易