33

インデックスへのパスが等しいかどうかをテストする方法を探しています。等しいとは、すべてのレベルで等しいことを意味しますか? 試してみましたが、うまくいかないようです。インデックスがまったく同じでなくても、compare:比較すると常にtrueになります。NSOrderedSame

4

2 に答える 2

90

isEqual:ほとんどすべての Objective-C オブジェクトは、メソッドを使用して比較できます。したがって、同等性をテストするには、 が必要なだけ[itemCategoryIndexPath isEqual:indexPath]で、準備完了です。これがNSObject実装されているため機能するためisEqual:、すべてのオブジェクトが自動的にそのメソッドを持ちますが、特定のクラスがそれをオーバーライドしない場合は、isEqual:オブジェクト ポインターを比較するだけです。

の場合NSIndexPathisEqual:メソッドがオーバーライドされているため、期待どおりにオブジェクトを比較できます。しかし、新しいクラスを作成しMyObject、メソッドをオーバーライドしない場合、[instanceOfMyObject isEqual:anotherInstanceOfMyObject]事実上instanceOfMyObject == anotherInstanceOfMyObject.


詳しくはNSObject Protocol Referenceを参照してください。

于 2011-06-16T22:05:31.417 に答える