我在NSString上有一个NSArray,但有些字符串只是数字.我如何正确排序数字?

Eth*_*len 2 iphone cocoa cocoa-touch ipad

我的NSArray包含100,110,91,98和87,所有NSStrings.

我想按顺序排列它们:87,91,98,100,110.

相反,它们显示为100,110,87,91,98.

不幸的是,我不能用所有的int而不是字符串来启动数组.任何人都有任何想法如何判断数组是否只包含字符串中的数字,也许使用for循环?然后我可以将它们全部转换为数组中的整数并按此方式进行排序.或者也许有一种我想念的简单方法?

如果有人有任何想法,请告诉我.

ugh*_*fhw 7

您可以使用NSNumericSearchNSString比较函数的选项以数字方式对字符串进行排序.要使用NSArray执行此操作,您需要编写一个块或函数来调用该compare:options:方法.

NSArray *theStrings; // Contains strings, some of which are numbers
NSArray *theSortedStrings = [theStrings sortedArrayUsingComparator:^(id obj1, id obj2) {
    return [(NSString *)obj1 compare:(NSString *)obj2 options:NSNumericSearch];
}];
Run Code Online (Sandbox Code Playgroud)

如果字符串中有一个数字,也就是"abcd89"之前会有数字排序"abcd123".