Objective c NSSortTable的文档不符合语法——它想说什么?
我有一个数组,我想排序,由于块是今年的“黑色”,我正在看Objective c NSSortTable的文档不符合语法——它想说什么?,objective-c,foundation,Objective C,Foundation,我有一个数组,我想排序,由于块是今年的“黑色”,我正在看 - (void)sortWithOptions:(NSSortOptions)opts usingComparator:(NSComparator)cmptr 我查找了要使用的排序选项,NSSortStable文档显示: 指定排序后的结果应返回比较的项,这些项的值应与它们最初出现的顺序相同 如果未指定此选项,则可以或不可以按原始顺序返回相等的对象 我还没有喝足够的咖啡来理解它的意思,第一句话甚至在语法上都不正确 有人能为假人翻译成英语吗
- (void)sortWithOptions:(NSSortOptions)opts usingComparator:(NSComparator)cmptr
我查找了要使用的排序选项,NSSortStable
文档显示:
指定排序后的结果应返回比较的项,这些项的值应与它们最初出现的顺序相同
如果未指定此选项,则可以或不可以按原始顺序返回相等的对象
我还没有喝足够的咖啡来理解它的意思,第一句话甚至在语法上都不正确
有人能为假人翻译成英语吗?NSSortStable规定,如果两个对象的比较相等,则它们的顺序应保持不变 例如,让我们考虑以下内容:
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"one", @"two", @"three", @"four", nil];
[array sortWithOptions:0 usingComparator:^NSComparisonResult(id obj1, id obj2) {
if ( [obj1 length] < [obj2 length] )
return NSOrderedAscending;
if ( [obj1 length] > [obj2 length] )
return NSOrderedDescending;
return NSOrderedSame;
}];
NSMutableArray*array=[NSMutableArray数组,其对象为:@“一”,“二”,“三”,“四”,零];
[数组排序选项:0使用比较器:^n比较结果(id obj1,id obj2){
如果([obj1长度]<[obj2长度])
回报率下降;
如果([obj1长度]>[obj2长度])
退而求其次;
返回指定名称;
}];
如果未指定NSSortStable
,则排序的数组可以是(一、二、四、三)
或(二、一、四、三)
,因为one
和two
具有相同的长度。两个结果都被接受。这允许排序算法执行(稍微)更快
指定
NSSortStable
时,相等比较的对象必须按其原始顺序返回(即先one
,然后two
)。稳定排序是尽可能保留元素顺序的排序
例如,如果您按姓氏排序,则稳定排序将使姓氏保持与最初在容器中出现的顺序相同的顺序。也就是说,如果我们有:
Bob Smith
Tom Jones
Dave Smith
Fred Smith
Al Jones
这将有点
Tom Jones
Al Jones
Bob Smith
Dave Smith
Fred Smith
注意,汤姆仍然在艾尔之上,鲍勃仍然在戴夫之上,戴夫仍然在弗雷德之上
“不稳定排序”不会试图保留二级排序,因此可以运行得稍快一些
我认为“have”应该是“have”,比如: 指定排序的结果应返回具有相同值的比较项,其值应与它们最初出现的顺序相同
也就是说,如果有价值相等的比较项目,这些项目应该在最终结果中保持相对排序。第一句在语法上看起来不正确,因为有一个隐含的“上述声明”前缀。我个人也无法理解你的第一句话!:)但我也更喜欢文档“非常正确”的时候!“…应该返回具有相同值的比较项目…”缺少几个词。我相信你是对的。我归档radar://28907830 因此,它将得到修复。