Я провел некоторое время сегодня, гоняясь за двумя ошибками, и в итоге исправил их обоих, используя одно и то же решение.
Теперь, когда у меня есть решение, я надеялся получить некоторую ясность за ним.
Я сравниваю атрибут из базовых данных (целое число 16 / NSNumber) с целым числом (ABPropertyID & ABMultiValueIdentifier).
Ошибка была в этом сравнении и, как ни странно, показала себя только после того, как я убил приложение (из фонового трея), снова открыл его и запустил тот же процесс, который включал сравнение. В любом случае ...
Это то, что перестало работать после перезапуска:
if (myNumber.aProperty == [NSNUmber numberWithInt:anInteger]) { /* do stuff here */ }
И вот два решения, которые до сих пор работают отлично:
if ([myNumber.aProperty integerValue] == anInteger) {/* do stuff here */ }
if ([myNumber.aProperty isEqualToNumber:[NSNumber numberWithInt:anInteger]]) { /* do stuff here */ }
Мне они все выглядят одинаково. Я всегда либо конвертирую NSNumber в integerValue, либо конвертирую целое число в NSNumber.
Есть идеи?