gpt4 book ai didi

objective-c - 如何对 NSArray 进行自然排序?

转载 作者:IT老高 更新时间:2023-10-28 11:49:10 26 4
gpt4 key购买 nike

我有一个对象数组,我需要它们按“标题”键排序。它目前正在工作,尽管它使用的是 ASCII 排序而不是自然排序。标题是文件名,所以它们看起来像这样:

文件1
文件2
文件3
...
文件10
文件11
文件 12

正如你所料:

文件1
文件10
文件11
文件12
文件2
文件3
...

有谁知道 NSArray 排序功能是否有内置方法来获得这种自然排序而不是字母排序?我找到了一些通用算法,但我希望有一些内置的。

最佳答案

NSStrings 可以是 compared使用 NSNumericSearch比较选项。

一个版本:

NSInteger sort(Obj* a, Obj* b, void*) {
return [[a title] compare:[b title] options:NSNumericSearch];
}

result = [array sortedArrayUsingFunction:&sort context:nil];

或者更通用一点:

NSInteger sort(id a, id b, void* p) {
return [[a valueForKey:(NSString*)p]
compare:[b valueForKey:(NSString*)p]
options:NSNumericSearch];
}

result = [array sortedArrayUsingFunction:&sort context:@"title"]

或者使用 block :

result = [array sortedArrayUsingComparator:^(Obj* a, Obj* b) { 
return [[a title] compare:[b title] options:NSNumericSearch];
}];

关于objective-c - 如何对 NSArray 进行自然排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2846301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com