0

NSMutableArray介してアーカイブされたカスタムオブジェクトがありますNSArchiverNSMutableArrayアーカイブをバックアップとして取得し、既存のアプリとマージできるようにする必要があります。アプリ内とアーカイブされていないものの間の重複を削除する必要がありますが、オブジェクトを介して比較を使用または使用するNSMutableArray通常の方法は、元々は等しいものの、アーカイブ後には明らかに機能しません。両方の配列を介してネストされた反復を実行し、オブジェクトivarを比較できますが、それはかなり手間がかかるようです。NSSetisEqualcontainsObject

足りないものはありますか?私はObjective-Cとを使用することに少し慣れていませんNSArchiver

4

1 に答える 1

1

isEqual:また、hash保存するオブジェクトでオーバーライドする必要がありますNSArchiver(カスタムの場合)。そうしないと、アーカイブされていないアイテムを既に持っているインスタンスと比較できません。

通常、isEqual:メソッドは、2つのオブジェクトの同等性に意味のあるすべてのivarを処理する必要があります。ただし、他の多くのオブジェクトを使用する2つのオブジェクトを、すべてをチェックせずに構成で比較できると考える方法がわかりません。それはあなたがしなければならないことです。

x、y、z ivarsのクラスAがあり、通常は[a1 isEqual:a2]iif[a1.x isEqual:a2.x] && [a1.y isEqual:a2.y] && [a1.z isEqual:a2.z]の場合、奇妙なことは何もありません。

于 2012-12-16T02:42:05.173 に答える