したがって、前のように for ループをネストすると、内側の for ループの反復が完了するたびに、外側の forループが1 回実行されることに注意してください。次に、if ステートメントは NSLog ステートメントの反対をチェックします。if ステートメントは numCodeTmp を numCodeInsertmp と比較し、それらが等しいかどうかを示す bool を返します。次に、その結果を反転し、それが true と評価されるかどうかを確認します。したがって、2 つが等しくない場合 (これは true と評価されます...紛らわしいですが、私は知っています)、Equal : %@, %@ を出力します。「!」を削除するつもりだったと思います。
では、より大きな問題について説明します。ディクショナリ内のオブジェクトを比較している場合は、その特定のオブジェクトにアクセスするためのキーを与える必要があります。上記のコードから numCodeForInsertingRow と numCode が何であるかはわかりませんが、それらが辞書である場合、それらからオブジェクトを正しく取得していません。文字列を比較するだけの場合は、NSSet を比較する方が違いを簡単に確認できます。文字列が辞書内のオブジェクトのキーであり、それが比較対象である場合は、次のいずれかを行う必要があります
- [dict allKeys] を使用してキーの配列を作成し、その方法で for ループを実行します。これは、Obj1 が Dict1 と Dict2 に存在する場合、Key1 は両方で同じであると想定しています。
- 各ディクショナリの特定のキーのオブジェクトの配列を作成します。[dict1Array カウント] > 0 && [dict2Array カウント] > 0 の場合、オブジェクトは両方の辞書に存在します。
比較する方法は他にもたくさんありますが、NSSet と上記の 2 点はほんの一例です。