Reputation: 173
How do I compare two objects of a custom class in Objective-C? I try to overloading the
- (NSComparisonResult)compare:(id)other;
method. This works great if I call the method manually
if ([obj1 compare:obj2] == NSOrderedDescending) {
// do something
}
Is there any way that I can do it like this?
if (obj1 > obj2) {
// do something
}
Or is there another method that I need to overload?
Upvotes: 2
Views: 706
Reputation: 10371
One way to achieve this is for your class you can define comparisons to everything that make sense to compare with.
@interface MyClass : NSObject
{
// your stuff
}
- (BOOL)isGreaterThanNumber:(NSNumber *)otherNumber;
+ (BOOL)compare:(MyClass *)myClass toNumber:(NSNumber *)otherNumber;
With well-named functions this isn't terribly different than overloading although yes it prevents you from using > and <. The actual code you write should be identical though as if overloading were included.
Upvotes: 0
Reputation: 47034
This is not possible, since objective C doesn't have operator overloading. You are comparing pointer values.
Upvotes: 8