11

Objective-C で 2 つのオブジェクトを比較するための標準的なメカニズムはありますか?

私はisEqual方法を知っていますが、正確な同等性を探しているのではなく、より少ない/より多い/等しい種類の比較を探しています。

Java ではcompareTo:それができますが、Objective-C にそのようなものはありますか?

4

3 に答える 3

6

実装する必要があります

- (NSComparisonResult)compare:(CustomClass *)otherObject;

NSOrderedAscendingNSOrderedDescendingまたはのいずれかを返します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:これが原因で (ソート時に) クラッシュすることに注意してください。

于 2013-08-22T12:55:47.373 に答える
3

compare:NSString、NSDate、NSNumber などのクラスにメソッドがあります。それらはすべて戻りNSComparisonResultます。

于 2013-08-22T12:56:48.550 に答える