我的公司拥有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中构建的
答案 0 :(得分:0)
上面代码中的问题是您要将NSNumber
与>
运算符进行比较。这不起作用,因为你正在比较NSNumber
的指针值!如果您知道类型并选择使用[nsNumberInstance integerValue]
之类的内容提取它,则上述代码将起作用。或者您只需选择使用NSNumber
的{{1}}方法。