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
现在有更好的方法吗?通过更好的方式,我的意思是更短的方式来实现相同的结果?由于我天真,我想知道是否有任何其他方法可能与上述方法一样长,但以更好的方式进行排序。
谢谢
答案 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 */
}];
它没有那么容易