iphone – 如何做一个自然排序在一个NSArray?

iphone – 如何做一个自然排序在一个NSArray?,第1张

概述我有一个对象数组,我需要他们按他们的“标题”键排序。它目前工作,虽然它使用ASCII排序而不是自然排序。标题是文件名,所以它们看起来像这样: file1 file2 file3 … … file10 file11 file12 我得到,正如你所期望的: file1 file10 file11 file12 file2 file3 … … 有没有人知道如果有一种方法内置的NSArray排序功能,以获 我有一个对象数组,我需要他们按他们的“标题”键排序。它目前工作,虽然它使用ASCII排序而不是自然排序。标题是文件名,所以它们看起来像这样:

file1
file2
file3
… …
file10
file11
file12

我得到,正如你所期望的:

file1
file10
file11
file12
file2
file3
… …

有没有人知道如果有一种方法内置的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"]

或使用块:

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

以上是内存溢出为你收集整理的iphone – 如何做一个自然排序在一个NSArray?全部内容,希望文章能够帮你解决iphone – 如何做一个自然排序在一个NSArray?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1044450.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存