Sort NSInteger using sortUsingComparator

I am trying to sort an array NSObjects(the object has a class). The object class has several variables that I want to use to sort the objects in the array, the variables that I use for sorting are of type NSStringor NSInteger, I'm sure, sorting NSString, but for this question I hope to get help for sorting NSInteger.

This is the method that I use to sort an array of objects. He gets NSMutableArrayobjects

- (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];
         }

I'm not sure how to compare NSInteger, I read that I can make minus each number from myself .. if the number is 0, then they are equal to + 1 / -1, etc. they are not ... but not sure if this is the best way to approach this.

Any help would be appreciated.

+5
4
[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];
}];

as [aString localizedCompare:anotherString] NSOrdered ( | ), .

+16

An NSInteger . ( int, long). , , int s.

C x - y, , , NSComparisonResult. , -

if (DoorID1 == DoorID2) {
    // compare secondary attribute
    NSString *handel1 = d1.handel;
    NSString *handel2 = d2.handel;
    return [handel1 localizedCompare:handel2];
}
else if (DoorID1 < DoorID2) return NSOrderedAscending;
else return NSOrderedDescending;

, NSSortDescriptor, .

- (NSMutableArray *)startSortingTheArray:(NSMutableArray *)unsortedArray {
    NSSortDescriptor *primary = [NSSortDescriptor sortDescriptorWithKey:@"doorID" ascending:YES];
    NSSortDescriptor *secondary = [NSSortDescriptor sortDescriptorWithKey:@"handel" ascending:YES selector:@selector(localizedCompare:)];
    [unsortedArray sortUsingDescriptors:@[primary, secondary]];
}
+2
[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;
    if (doorID1==doorID2) {
        NSString *s1=d1.someString;
        NSString *s2=d2.someString;
        return [s1 compare:s2];
    }
}
+1

:

NSComparisionResult res = [@(d1.doorID) compare:@(d2.doorID)];
return res == NSOrderedSame ? [d1.handel localizedCompare: d2.handel] : res;
+1

All Articles