Таким образом, понимают, что, когда вы гнездо для петли, как вы сделали, то Outter цикл запускается на выполнение раз для каждой полной итерации внутреннего цикла для. Во-вторых, оператор if проверяет противоположность тому, что говорит инструкция NSLog. Оператор if сравнивает numCodeTmp с numCodeInsertmp и возвращает bool, указав, равны они или нет. Затем вы инвертируете этот результат и проверяете, соответствует ли это true. Таким образом, вы говорите, если эти два НЕ равны (что будет оценивать значение true ... запутанное, я знаю), print Equal:% @,% @. Я предполагаю, что вы хотели удалить «!».
Хорошо, теперь для большей проблемы. Если вы сравниваете объекты в словаре, вы должны предоставить ему ключ для доступа к этому конкретному объекту. Я не могу сказать, какие numCodeForInsertingRow и numCode - из кода, который вы указали выше, но если это словари, вы не правильно извлекаете объекты из них. Если вы просто сравниваете строки, сравнение NSSets было бы более простым способом проверки различий. Если строки ключи для объектов в словаре, и это то, что вы сравниваете, вы должны либо
- Создать массив ключей с использованием [Dict AllKeys], а затем запустить для петель таким образом. Это предполагает, что если Obj1 существует в Dict1 и Dict2, Key1 в обоих случаях одинакова.
- Создайте массив объектов для определенного ключа для каждого словаря. Если [dict1Array число]> 0 & & [dict2Array число]> 0, то объект существует в обоих словарях
Есть целый ряд других способов сравнения, но NSSet и два пункта выше всего лишь несколько Примеры.