You're using the standard compare:
method in your selector. It's just comparing the enums. Create your own method that compares the way you want. It can call your NSValueTransformer to get the string values, and you compare those, and return the appropriate NSComparisonResult.
[edit] OK my first suggestion won't work easily (without using categories). But something like this should. Assuming myValueTransformer is already instantiated, and your status is an NSNumber:
sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"status" ascending: YES
comparator:^(id first, id second){
NSNumber* firstNum = (NSNumber*)first;
NSNumber* secondNum = (NSNumber*)second;
if ([myValueTransformer transformedValue:firstNum] == [myValueTransformer transformedValue:secondNum]) {
return NSOrderedSame;
} else if ([myValueTransformer transformedValue:firstNum] > [myValueTransformer transformedValue:secondNum]) {
return NSOrderedDescending;
} else {
return NSOrderedAscending;
}
}];