sortUsingComparator 在 iPad 上排序不正确 4

sortUsingComparator sorting incorrectly on iPad 4

我公司有 iPad 台 4 台和 iPad 台 Air 2 台,我们正在为这些设备部署自定义应用程序。应用程序 运行 在 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 到 运行 方法不正确。两种设备类型都是 运行ning iOS 10.2.1 或 10.3,并且该应用是在 Xcode 8.3

中构建的

上面代码中的问题是您将 NSNumber> 运算符进行比较。这是行不通的,因为您正在比较 NSNumber 的指针的值!如果您知道类型并选择使用 [nsNumberInstance integerValue] 之类的方式提取它,则上述代码将起作用。或者您可以简单地选择使用 NSNumbercompare 方法。