Я вполне уверен Вы, любой должен использовать .lower () или использовать регулярное выражение. Я не знаю о встроенной нечувствительной к регистру функции сравнения строк.
Вы создавали эти классы с помощью моделлера (выберите объект, файл> новый file .., Managed Object Class, затем выберите объект модели)?
Некоторое время назад у меня была аналогичная проблема, потому что я не создавал свои модели управляемых объектов с помощью Modeller. Чтобы убедиться, что все работает, я скопировал и сохранил свои собственные методы (и все остальное, что я реализовал) и начал с нуля с помощью моделлера.
Вероятно, вы просто забыли указать имя класса в модели при создании объекта - по умолчанию используется NSManagedObject. Нажмите «Человек» и «Адрес» в моделисте и убедитесь, что справа, где перечислены свойства сущности, поле «Класс» правильно заполнено именем соответствующего объектного класса C, а не просто настройкой NSManagedObject по умолчанию.