Iphone Objective-C中的排序数组
我目前正在尝试自学Objective-C,并且正在做一个需要排序数组的练习 我使用以下代码完成了它:Iphone Objective-C中的排序数组,iphone,objective-c,ios,Iphone,Objective C,Ios,我目前正在尝试自学Objective-C,并且正在做一个需要排序数组的练习 我使用以下代码完成了它: NSSortDescriptor * newSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:TRUE]; NSArray *sortDescriptors = [NSArray arrayWithObject:newSortDescriptor]; [self.theBookStore sortU
NSSortDescriptor * newSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:TRUE];
NSArray *sortDescriptors = [NSArray arrayWithObject:newSortDescriptor];
[self.theBookStore sortUsingDescriptors:sortDescriptors];
我的问题是这里到底发生了什么。我真的不太明白我到底做了什么
第1行:我知道我在这里创建了一个具有描述符的新对象。这有两个参数,一个是我要排序的列,另一个是升序
第二行:这是我感到困惑的一行。为什么我需要排序描述符数组?当我读到这段代码时,我怀疑它创建了一个只有一行的数组,对吗
第3行:我知道这是在调用sortUsingDescriptors方法,但我的困惑是,为什么这个函数需要一个数组
我已经阅读了文档,但我真的在寻找一个简单的解释
非常感谢您的帮助- 第1行:。。是的,你的权利。您正在创建一个名为
的自定义对象。该对象定义了要排序的属性。您确实输入了“标题”。因此,数组中要排序的对象将在该属性(yourObject.title“kind of”)之后排序NSSortDescriptor
- 第2行:因为排序方法(
)总是需要一个数组,所以您需要创建一个只有一个对象的NSArray。可以看起来有点傻。但这绝对有道理。假设您想按照两个标准进行排序(先说“标题”,然后说“城市”)sortusingsdescriptor
- 第3行:是,这里必须是一个数组,因为在多个条件之后进行排序
[newSortDescriptor release];
如果存在多个匹配项,将使用多个排序描述符来解决所发生的问题。我是优先顺序。第二个描述符将告诉它如果发现两个标题相同该怎么办 第1行:我知道这里我创建了一个具有 描述符。这有两个参数,我要排序的列和 它正在上升 实际上,您已经创建了一个作为描述符的对象。它描述了如何对数组进行排序 第二行:这是我感到困惑的一行。为什么我需要一个数组 排序描述符?当我读到这段代码时,我怀疑它创建了一个数组 只有一行,对吗 对--您已经创建了一个包含单个对象的数组。如果您真的想对那么多字段进行排序,可以创建一个包含10个、15个或87个排序描述符的数组。更多的时候,你用一个,两个,也许三个。因此,如果要对人员列表进行排序,可以添加指定姓和名的排序描述符。这样,姓氏相同的人将根据他们的名字排列在该组中 第3行:我知道这是调用SortusingDescriptor 方法,但我的困惑是,为什么这个函数需要一个数组 同样,您可以使用主、次、三级(等等)排序键。您可以有一个单独的方法,当您只想对一个键进行排序时,它采用单个排序描述符而不是数组。NSArray不提供此功能,但如果需要,您可以随时将其添加到类别中:
@category NSArray (SingleSortDescriptor)
- (NSArray*)sortUsingDescriptor:(NSSortDescriptor*)descriptor;
@end
@implementation NSArray (SingleSortDescriptor)
- (NSArray*)sortUsingDescriptor:(NSSortDescriptor*)descriptor
{
return [self sortUsingDescriptors:[NSArray arrayWithObject:descriptor]];
}
@end
我们已经有了ARC大约一年了——也许是时候开始假设人们正在使用它,而不是假设他们没有使用它了。@JonasSchnelli和我的iPhone 3G……:-(@Caleb:Welcome.。我访问了你的个人资料。如何让它看起来像那样?看起来很好。@anonymous我不确定你指的是什么,除非它可能是关于我部分中的“天赋”?转到你的个人资料,点击顶部附近的“天赋”链接(“编辑prefs flair应用程序…”),然后复制HTML以供参考“组合堆栈交换天赋”。将其粘贴到个人资料的“关于我”部分。