#import "MenuItem.h" @implementation MenuItem + (instancetype)itemWithText: (OFString *)text action: (OFString *)action { return [[self alloc] initWithText: text action: action]; } - (instancetype)initWithText: (OFString *)text action: (OFString *)action { self = [super init]; _text = [text copy]; _action = [action copy]; return self; } - (OFComparisonResult)compare: (id)otherObject { MenuItem *otherItem; if (![otherObject isKindOfClass: MenuItem.class]) @throw [OFInvalidArgumentException exception]; int x, y; @try { x = _text.intValue; } @catch (OFInvalidFormatException *e) { x = 0; } @catch (OFOutOfRangeException *e) { x = 0; } @ try { y = otherItem.text.intValue; } @catch (OFInvalidFormatException *e) { y = 0; } @catch (OFOutOfRangeException *e) { y = 0; } if (x > y) return OFOrderedAscending; if (x < y) return OFOrderedDescending; return OFOrderedSame; } @end