使用sortUsingComparator对NSInteger进行排序

Hur*_*rkS 6 cocoa-touch objective-c nsinteger ios

我正在尝试排序一个数组NSObjects(一个对象是一个类).对象类有几个变量,我想用它来排序数组中的对象,我用来排序的变量是类型的,NSString或者NSInteger我有信心我正在排序 NSStrings但是对于这个问题,我希望得到帮助分选NSInteger.

这是我用来对对象数组进行排序的方法,它接收一个NSMutableArray对象

- (NSMutableArray *)startSortingTheArray:(NSMutableArray *)unsortedArray
{
    [unsortedArray sortUsingComparator:^ NSComparisonResult(SearchResultItem *d1, SearchResultItem *d2) {
        NSInteger DoorID1 = d1.doorID;
        NSInteger DoorID2 = d2.doorID;
        NSComparisonResult result = [DoorID1 localizedCompare:DoorID2]; // Not sure how to sort these two integers
        if (result == NSOrderedSame) {
            NSString *handel1 = d1.handel;
            NSString *handel2 = d2.handel;
            result = [handel1 localizedCompare:handel2];
         }
Run Code Online (Sandbox Code Playgroud)

我不知道如何比较NSInteger,我已经读过我可以减去它自己的每个数字..如果数字是0那么它们是相等的还是+1/-1等它们不是......但不确定那是不是接近这个的最好方法.

任何帮助,将不胜感激.

Vik*_*ica 18

[unsortedArray sortUsingComparator:^ NSComparisonResult(SearchResultItem *d1, SearchResultItem *d2) {
    NSInteger doorID1 = d1.doorID;
    NSInteger doorID2 = d2.doorID;
    if (doorID1 < doorID2)
        return NSOrderedAscending;
    if (doorID1 > doorID2)
        return NSOrderedDescending;
    return [d1.handel localizedCompare: d2.handel];
}];
Run Code Online (Sandbox Code Playgroud)

因为[aString localizedCompare:anotherString]将返回NSOrdered(升序|降序|相同),您可以返回其字符串大小写的结果.

  • @vikingosegundo我认为你将NSOrderedAscending和NSOrderedDescending案件混淆了.我不得不反转它们以获得NSBinarySearchingInsertionIndex案例的正确插入索引. (3认同)