sortedArrayUsingComparators 不按升序对数字进行排序
sortedArrayUsingComparators not sorting numbers in ascending order
所以这可能真的很简单,但我 运行 遇到了 sortedArrayUsingComparators 方法的问题。我正在尝试对仅包含数字的 NSString 数组进行排序。例如,我有一个字符串数组:0,1,2,3,4,5,6,7,10,8,9,11,12。当我 运行 使用我的代码时,我没有得到排序结果。事实上,我不认为数组会改变顺序。有人可以帮我解决我在这里做错了什么吗?
这是代码片段:
[tmp sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
NSInteger first = obj1.integerValue;
NSInteger second = obj2.integerValue;
if (first < second)
{
return NSOrderedAscending;
}
else {
return NSOrderedDescending;
}
}];
谢谢!
tmp
的值不会改变,返回一个新的排序数组。
假设 tmp
是一个 NSArray
然后尝试
tmp = [tmp sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
NSInteger first = obj1.integerValue;
NSInteger second = obj2.integerValue;
if (first < second)
{
return NSOrderedAscending;
}
else {
return NSOrderedDescending;
}
}];
如果 tmp
是 NSMutableArray
则尝试 -sortUsingComparator:
而不是 -sortedArrayUsingComparator:
[tmp sortUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
NSInteger first = obj1.integerValue;
NSInteger second = obj2.integerValue;
if (first < second)
{
return NSOrderedAscending;
}
else {
return NSOrderedDescending;
}
}];
所以这可能真的很简单,但我 运行 遇到了 sortedArrayUsingComparators 方法的问题。我正在尝试对仅包含数字的 NSString 数组进行排序。例如,我有一个字符串数组:0,1,2,3,4,5,6,7,10,8,9,11,12。当我 运行 使用我的代码时,我没有得到排序结果。事实上,我不认为数组会改变顺序。有人可以帮我解决我在这里做错了什么吗?
这是代码片段:
[tmp sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
NSInteger first = obj1.integerValue;
NSInteger second = obj2.integerValue;
if (first < second)
{
return NSOrderedAscending;
}
else {
return NSOrderedDescending;
}
}];
谢谢!
tmp
的值不会改变,返回一个新的排序数组。
假设 tmp
是一个 NSArray
然后尝试
tmp = [tmp sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
NSInteger first = obj1.integerValue;
NSInteger second = obj2.integerValue;
if (first < second)
{
return NSOrderedAscending;
}
else {
return NSOrderedDescending;
}
}];
如果 tmp
是 NSMutableArray
则尝试 -sortUsingComparator:
而不是 -sortedArrayUsingComparator:
[tmp sortUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
NSInteger first = obj1.integerValue;
NSInteger second = obj2.integerValue;
if (first < second)
{
return NSOrderedAscending;
}
else {
return NSOrderedDescending;
}
}];