问题
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?
回答1:
This is not possible, since objective C doesn't have operator overloading. You are comparing pointer values.
回答2:
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.
来源:https://stackoverflow.com/questions/5540063/how-to-compare-objects-using-operator-or-in-objective-c