user691219
user691219

Reputation: 173

How to compare objects using operator < or > in Objective-C?

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

Answers (2)

Nektarios
Nektarios

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

mvds
mvds

Reputation: 47034

This is not possible, since objective C doesn't have operator overloading. You are comparing pointer values.

Upvotes: 8

Related Questions