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循环?然后我可以将它们全部转换为数组中的整数并按此方式进行排序.或者也许有一种我想念的简单方法?
如果有人有任何想法,请告诉我.
您可以使用NSNumericSearch
NSString比较函数的选项以数字方式对字符串进行排序.要使用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"
.