Сделай шаг назад, сделай глубокий вдох и посмотри. У вас есть это объявление:
@property (nonatomic, retain) NSSet *featureToUsers;
И диагностика, которую вы получаете: __NSCFSet
не понимает сообщение isEqualToString:
. Откуда у вас сложилось впечатление, что NSSet
должен быть в состоянии ответить на сообщение isEqualToString:
? Это не так, и это говорит вам об этом. isEqualToString:
- это сообщение NSString
. Вы не говорите, но я думаю, что вы хотите получить некоторую строку из вашей модели и что-то с ней сделать. Какая строка? Вы не говорите, но я предполагаю, что вы объявили это отношение, чтобы указать на другую сущность с именем Users
. Вы не говорите, но я полагаю (в стороне, вы должны написать лучшие вопросы, включив соответствующий контекст), что у сущности Users
есть какой-то строковый атрибут, возможно, name
или около того.
Так что если вы хотите эту строку, вам нужно извлечь ее из экземпляра Users
, возможно, так:
Users *myUSer = ...; // see below
NSString *myUserName = myUser.name;
if ([myUserName isEqualToString:@"Superman"]) { ... }
Итак, ключевой момент № 1: Базовые данные позволяют вам управлять экземплярами сущностей, а не строками. Но атрибуты сущности могут быть строковыми.
Итак, как вы собираетесь получить Users
экземпляр? Если вы напишите:
Users *myUSer = feature.featureToUsers.name;
Это тоже не будет работать. Поскольку featureToUsers объявлен как NSSet
, а не как Users
.
Так почему же это свойство, которое реализует отношение ко-многим, объявлено как NSSet? Поскольку это отношение ко многим, и поэтому вам нужно, чтобы оно было напечатано как коллекция, чтобы охватить все связанные объекты.
Итак, ключевой момент # 2: отношение ко многим объявляется как коллекция (а именно NSSet
).
Так что же внутри этой коллекции? Ну, Users
вы хотите достичь. Таким образом, вы можете перебирать всех связанных пользователей, например:
for (Users *aRelatedUser in feature.featureToUsers) {
NSString *relatedUserName = aRelatedUser.name;
if ([relatedUserName isEqualToString:@"Superman"]) { ... }
}
А теперь тебе надо идти.