My self.allArray contains all my objects.  Then self.enabledSet contains a subset of these objects.
To create a sortedEnabledArray I currently do this:
NSArray* enabledArray = [self.enabledSet allObjects];
NSArray* sortedEnabledArray;
sortedEnabledArray = [enabledArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b)
{
    int indexA = [self.allArray indexOfObject:a];
    int indexB = [self.allArray indexOfObject:b];
    if (indexA < indexB)
    {
        return NSOrderedAscending;
    }
    else if (indexA > indexB)
    {
        return NSOrderedDescending;
    }
    else
    {
        return NSOrderedSame;
    }
}];
but I am wondering if this can't be done in a smarter/shorter way, using an NSPredicate for example.  Any ideas?
EDIT: One idea to shorten is:
    int difference = indexA - indexB;
    // Convert difference to NSOrderedAscending (-1), NSOrderedSame (0), or NSOrderedDescending (1).
    return (difference != 0) ? (difference / abs(difference)) : 0;