Chr*_*son 3 iphone objective-c ios
我目前正在尝试自学Objective-C并正在玩一个我需要对数组进行排序的练习.
我设法使用以下代码完成它:
NSSortDescriptor * newSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:TRUE];
NSArray *sortDescriptors = [NSArray arrayWithObject:newSortDescriptor];
[self.theBookStore sortUsingDescriptors:sortDescriptors];
Run Code Online (Sandbox Code Playgroud)
我的问题是关于这里发生的事情.我真的不明白我做了什么.
第1行:我在这里理解我已经创建了一个具有描述符的新对象.这有两个参数,我想要排序的列,它是升序的.
第2行:这是我感到困惑的一句话.为什么我需要一组排序描述符?当我读到这段代码时,我怀疑它创建的数组中只有一行是正确的吗?
第3行:我知道这是在调用sortUsingDescriptors方法,但同样,我的困惑是为什么这个函数需要一个数组.
我已经阅读了文档,但我真的在寻找一个简单的解释.
任何帮助深表感谢
第1行:我在这里理解我已经创建了一个具有描述符的新对象.这有两个参数,我想要排序的列,它是升序的.
真的,你已经创建了一个对象,它是一个描述符.它描述了如何对数组进行排序.
第2行:这是我感到困惑的一句话.为什么我需要一组排序描述符?当我读到这段代码时,我怀疑它创建的数组中只有一行是正确的吗?
右 - 您创建了一个包含单个对象的数组.如果你真的想要对那么多字段进行排序,你可以创建一个包含十个或十五个或八十七个排序描述符的数组.更常见的是,你使用一,二,三个.因此,如果您要对人员列表进行排序,则可以添加指定姓氏和名字的排序描述符.这样,具有相同姓氏的人将根据他们的名字安排在该组中.
第3行:我知道这是在调用sortUsingDescriptors方法,但同样,我的困惑是为什么这个函数需要一个数组.
同样,它可以使您拥有主要,次要,第三(等)排序键.当您只想对一个键进行排序时,您可以使用单独的方法来获取单个排序描述符而不是数组.NSArray不提供,但如果您需要,您可以随时将其添加到类别中:
@category NSArray (SingleSortDescriptor)
- (NSArray*)sortUsingDescriptor:(NSSortDescriptor*)descriptor;
@end
@implementation NSArray (SingleSortDescriptor)
- (NSArray*)sortUsingDescriptor:(NSSortDescriptor*)descriptor
{
return [self sortUsingDescriptors:[NSArray arrayWithObject:descriptor]];
}
@end
Run Code Online (Sandbox Code Playgroud)