Objective-C で 2 つのオブジェクトを比較するための標準的なメカニズムはありますか?
私はisEqual
方法を知っていますが、正確な同等性を探しているのではなく、より少ない/より多い/等しい種類の比較を探しています。
Java ではcompareTo:
それができますが、Objective-C にそのようなものはありますか?
Objective-C で 2 つのオブジェクトを比較するための標準的なメカニズムはありますか?
私はisEqual
方法を知っていますが、正確な同等性を探しているのではなく、より少ない/より多い/等しい種類の比較を探しています。
Java ではcompareTo:
それができますが、Objective-C にそのようなものはありますか?
実装する必要があります
- (NSComparisonResult)compare:(CustomClass *)otherObject;
NSOrderedAscending
、NSOrderedDescending
またはのいずれかを返しますNSOrderedSame
。
実装していNSObject
ませんが、比較のためにシステム全体で使用されている方法です。例えば:
NSArray *unsorted = @[[CustomClass new], [CustomClass new], [CustomClass new]];
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"self"
ascending:NO]
NSArray *sorted = [unsorted sortedArrayUsingDescriptors:@[sort]];
compare:
「CustomClass」を呼び出し、結果を使用して配列をソートします。クラスが実装されていない場合、compare:
これが原因で (ソート時に) クラッシュすることに注意してください。
compare:
NSString、NSDate、NSNumber などのクラスにメソッドがあります。それらはすべて戻りNSComparisonResult
ます。