sortUsingComparator在iPad 4上排序错误

时间:2017-04-03 20:18:14

标签: ios objective-c ipad methods

我的公司拥有iPad 4和iPad Air 2s的数量,我们正在为这些设备部署自定义应用程序。该应用程序在iPad Air 2s上运行良好,但iPad 4s有一个奇怪的错误。 sortUsingComparator方法错误地对我的数组进行排序。

示例代码:

-(void)sortArraysOfStrings:(NSMutableArray*)stringArray andNumbers:(NSMutableArray*)numbersArray onCompletion:(void(^)(NSMutableArray*,NSMutableArray*))callback {

//sort here
[stringArray sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

[numbersArray sortUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
    NSNumber *num1 = (NSNumber*)obj1;
    NSNumber *num2 = (NSNumber*)obj2;
    if (num1 > num2) {
        return (NSComparisonResult)NSOrderedDescending;
    }else {
        return (NSComparisonResult)NSOrderedAscending;
    }
    return (NSComparisonResult)NSOrderedSame;
}];

//return arrays in completion handler
callback(nameArray, targetArray);
}

知道什么是错的吗?我不知道是什么原因导致iPad 4错误地运行该方法。两种设备类型都运行iOS 10.2.1或10.3,应用程序是在Xcode 8.3中构建的

1 个答案:

答案 0 :(得分:0)

上面代码中的问题是您要将NSNumber>运算符进行比较。这不起作用,因为你正在比较NSNumber的指针值!如果您知道类型并选择使用[nsNumberInstance integerValue]之类的内容提取它,则上述代码将起作用。或者您只需选择使用NSNumber的{​​{1}}方法。