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 因此,它将得到修复。